function modifier() { if (isset($this->ModifierID) and $this->ModifierID) { return eZUser::fetch($this->ModifierID); } return null; }
public function authenticate( ezcAuthentication $auth, ezcMvcRequest $request ) { if ( !$auth->run() ) { $aStatuses = $auth->getStatus(); $statusCode = null; foreach ( $aStatuses as $status ) { if ( key( $status ) === 'ezpOauthFilter' ) { $statusCode = current( $status ); break; } } $request->variables['ezpAuth_redirUrl'] = $request->uri; $request->variables['ezpAuth_reason'] = $statusCode; $request->uri = "{$this->prefix}/auth/oauth/login"; return new ezcMvcInternalRedirect( $request ); } else { $user = eZUser::fetch( ezpOauthFilter::$tokenInfo->user_id ); if ( !$user instanceof eZUser ) { throw new ezpUserNotFoundException( ezpOauthFilter::$tokenInfo->user_id ); } return $user; } }
/** * Returns user who requested the import * @return eZUser */ public function getUser() { if (!$this->user instanceof eZUser) { $this->user = eZUser::fetch($this->attribute('user_id')); } return $this->user; }
public static function siteaccessCallFunction($siteaccesses = array(), $fnc = null) { $old_access = $GLOBALS['eZCurrentAccess']; $ini = eZINI::instance('site.ini'); foreach ($siteaccesses as $siteaccess) { /* Change the siteaccess */ self::changeAccess(array("name" => $siteaccess, "type" => EZ_ACCESS_TYPE_URI)); if ($ini->hasVariable('UserSettings', 'AnonymousUserID')) { $user_id = $ini->variable('UserSettings', 'AnonymousUserID'); $user = eZUser::fetch($user_id); if ($user instanceof eZUser) { $user->loginCurrent(); try { call_user_func($fnc); } catch (Exception $e) { eZCLI::instance()->output("Skipping access {$siteaccess}"); continue; } } else { continue; } } } self::changeAccess($old_access); }
function creator() { if (isset($this->CreatorID) and $this->CreatorID) { return eZUser::fetch($this->CreatorID); } return null; }
static function setValue( $name, $value, $storeUserID = false ) { $db = eZDB::instance(); $name = $db->escapeString( $name ); $rawValue = $value; $value = $db->escapeString( $value ); $isCurrentUser = true; if ( $storeUserID === false ) { $user = eZUser::currentUser(); } else { $currentID = eZUser::currentUserID(); if ( $currentID != $storeUserID ) $isCurrentUser = false; $user = eZUser::fetch( $storeUserID ); if ( !is_object( $user ) ) { eZDebug::writeError( "Cannot set preference for user $storeUserID, the user does not exist" ); return false; } } // We must store the database changes if: // a - The current user is logged in (ie. not anonymous) // b - We have specified a specific user (not the current). // in which case isLoggedIn() will fail. if ( $storeUserID !== false or $user->isLoggedIn() ) { // Only store in DB if user is logged in or we have // a specific user ID defined $userID = $user->attribute( 'contentobject_id' ); $existingRes = $db->arrayQuery( "SELECT * FROM ezpreferences WHERE user_id = $userID AND name='$name'" ); if ( count( $existingRes ) > 0 ) { $prefID = $existingRes[0]['id']; $query = "UPDATE ezpreferences SET value='$value' WHERE id = $prefID AND name='$name'"; $db->query( $query ); } else { $query = "INSERT INTO ezpreferences ( user_id, name, value ) VALUES ( $userID, '$name', '$value' )"; $db->query( $query ); } } // We also store in session if this is the current user (anonymous or normal user) // use $rawValue as value will be escaped by session code (see #014520) if ( $isCurrentUser ) { eZPreferences::storeInSession( $name, $rawValue ); } return true; }
/** * Returns the email address of the user associated with the digest * settings. * * @return string */ protected function address() { $user = eZUser::fetch($this->UserID); if ($user instanceof eZUser) { return $user->attribute('email'); } return ''; }
/** * @see ezpRestAuthenticationStyleInterface::authenticate() */ public function authenticate(ezcAuthentication $auth, ezcMvcRequest $request) { if (!$auth->run() && $request->uri !== "{$this->prefix}/fatal") { throw new ezpUserNotFoundException($auth->credentials->id); } else { return eZUser::fetch($auth->credentials->id); } }
/** * Returns if eZ Publish user has connection to specified social network * * @param int $userID * @param string $loginMethod * * @return bool */ static function userHasConnection($userID, $loginMethod) { $count = eZPersistentObject::count(self::definition(), array('user_id' => $userID, 'login_method' => $loginMethod)); if ($count > 0) { return true; } $user = eZUser::fetch($userID); if (substr($user->Login, 0, 10 + strlen($loginMethod)) === 'ngconnect_' . $loginMethod) { return true; } return false; }
/** * @param eZContentObjectAttribute $contentObjectAttribute the attribute to serialize * @param eZContentClassAttribute $contentClassAttribute the content class of the attribute to serialize * @return array */ public static function getAttributeContent( eZContentObjectAttribute $contentObjectAttribute, eZContentClassAttribute $contentClassAttribute ) { $user = eZUser::fetch( $contentObjectAttribute->attribute( "contentobject_id" ) ); return array( 'content' => array( 'id' => $user->attribute( 'id' ), 'login' => $user->attribute( 'login' ), 'email' => $user->attribute( 'email' ), ), 'has_rendered_content' => false, 'rendered' => null, ); }
function setAttribute($attr, $val) { switch ($attr) { case 'is_enabled': if (!$val) { $user = eZUser::fetch($this->UserID); if ($user) { eZUser::removeSessionData($this->UserID); } } break; } eZPersistentObject::setAttribute($attr, $val); }
function setAttribute($attr, $val) { switch ($attr) { case 'is_enabled': if (!$val) { $user = eZUser::fetch($this->UserID); if ($user) { eZUser::removeSessionData($this->UserID); } } eZUser::purgeUserCacheByUserId($this->UserID); break; } parent::setAttribute($attr, $val); }
public function __construct() { $cli = eZCLI::instance(); $standard_options = "[h|help][legacy-help][q|quiet][d;*|debug;*][c|colors][no-colors][logfiles][no-logfiles][s:|siteaccess:][l:|login:][p:|password:][v*|verbose*]"; $script_options = "[f:|filter:*][o:|operation:*][and][or]"; // Fetch all command line options $options = $cli->getOptions($standard_options . $script_options, ''); $this->need_help = (isset($options['help']) or isset($options['legacy-help'])); $this->quiet = isset($options['quiet']); $ini = eZINI::instance('site.ini'); $iniBT = eZINI::instance('batchtool.ini'); // User to run the specified commands with (set to admin pr.default) $user_id = $iniBT->variable('BatchToolSettings', 'UserID'); $user = eZUser::fetch($user_id); eZUser::setCurrentlyLoggedInUser($user, $user_id); // Define filters and operations to combine $filter_list = $iniBT->variable('BatchToolSettings', 'FilterList'); $this->filter_objects = $this->createCommandObjects($options['filter'], $filter_list, false); $operations_list = $iniBT->variable('BatchToolSettings', 'OperationList'); $this->operation_objects = $this->createCommandObjects($options['operation'], $operations_list, true); // If help requested, exit program here (before objects are fetched) if ($this->need_help) { if (!isset($options['filter']) and !isset($options['operation'])) { $cli->output(' php runcronjobs.php batchtool --filter="..." --operation="..." [--and|--or] [--legacy-help|--help] --and - combine multiple filters with a logical and --or - combine multiple filters with a logical or --filter - filter to specify objects to run operations on --operation - do something on the objects specified by any filter Enabled filters: ' . implode("\n", $filter_list) . ' Enabled operations: ' . implode("\n", $operations_list) . ' '); } return; } // Get objects requested by the specified filters $this->object_list = $this->getObjectsFromFilters($options['and']); unset($this->filter_objects); }
function execute( $xml ) { $template = $xml->getAttribute( 'template' ); $receiverID = $xml->getAttribute( 'receiver' ); $nodeID = $xml->getAttribute( 'node' ); $ini = eZINI::instance(); $mail = new eZMail(); $tpl = eZTemplate::factory(); $node = eZContentObjectTreeNode::fetch( $nodeID ); if ( !$node ) { $node = eZContentObjectTreeNode::fetch( 2 ); } $emailSender = $ini->variable( 'MailSettings', 'EmailSender' ); if ( !$emailSender ) $emailSender = $ini->variable( "MailSettings", "AdminEmail" ); $receiver = eZUser::fetch( $receiverID ); if ( !$receiver ) { $emailReceiver = $emailSender; } else { $emailReceiver = $receiver->attribute( 'email' ); } $tpl->setVariable( 'node', $node ); $tpl->setVariable( 'receiver', $receiver ); $body = $tpl->fetch( 'design:' . $template ); $subject = $tpl->variable( 'subject' ); $mail->setReceiver( $emailReceiver ); $mail->setSender( $emailSender ); $mail->setSubject( $subject ); $mail->setBody( $body ); $mailResult = eZMailTransport::send( $mail ); return $mailResult; }
function addNews(eZContentObjectTreeNode $node) { $ini = eZINI::instance('xrowsitemap.ini'); $news = new xrowSitemapItemNews(); $images = array(); // Adding the root node $object = $node->object(); $news->publication_date = new DateTime('@' . $object->attribute('published')); $news->title = $object->attribute('name'); $user = eZUser::fetch(eZUser::anonymousId()); if (!xrowSitemapTools::checkAccess($object, $user, 'read')) { $news->access = 'Subscription'; } // Get Genres, if enable if ((!$ini->hasVariable('NewsSitemapSettings', 'UseGenres') || $ini->hasVariable('NewsSitemapSettings', 'UseGenres') && $ini->variable('NewsSitemapSettings', 'UseGenres') != 'disable') && $ini->hasVariable('NewsSitemapSettings', 'Genres')) { $genres_array = $ini->variable('NewsSitemapSettings', 'Genres'); // set genre if set if (isset($genres_array[$node->ClassIdentifier])) { $news->genres = array($genres_array[$node->ClassIdentifier]); } } $dm = $node->dataMap(); $news->keywords = array(); foreach ($dm as $attribute) { switch ($attribute->DataTypeString) { case 'xrowmetadata': if ($attribute->hasContent()) { $keywordattribute = $attribute->content(); $news->keywords = array_merge($news->keywords, $keywordattribute->keywords); } break; case 'ezkeyword': if ($attribute->hasContent()) { $keywordattribute = $attribute->content(); $news->keywords = array_merge($news->keywords, $keywordattribute->KeywordArray); } break; } } if ($ini->hasVariable('NewsSitemapSettings', 'AdditionalKeywordList')) { $news->keywords = array_merge($news->keywords, $ini->variable('NewsSitemapSettings', 'AdditionalKeywordList')); } return $news; }
/** * clean up subscription after updating comment * @see extension/ezcomments/classes/ezcomCommentManager#afterUpdatingComment($comment, $notified) */ public function afterUpdatingComment($comment, $notified, $time) { $user = eZUser::fetch($comment->attribute('user_id')); // if notified is true, add subscription, else cleanup the subscription on the user and content $contentID = $comment->attribute('contentobject_id'); $languageID = $comment->attribute('language_id'); $subscriptionType = 'ezcomcomment'; if (!is_null($notified)) { $subscriptionManager = ezcomSubscriptionManager::instance(); if ($notified === true) { //add subscription but not send activation try { $subscriptionManager->addSubscription($comment->attribute('email'), $user, $contentID, $languageID, $subscriptionType, $time, false); } catch (Exception $e) { eZDebug::writeError($e->getMessage(), __METHOD__); switch ($e->getCode()) { case ezcomSubscriptionManager::ERROR_SUBSCRIBER_DISABLED: return 'The subscriber is disabled.'; default: return false; } } } else { $subscriptionManager->deleteSubscription($comment->attribute('email'), $comment->attribute('contentobject_id'), $comment->attribute('language_id')); } } //3. update queue. If there is subscription, add one record into queue table // if there is subcription on this content, add one item into queue if (ezcomSubscription::exists($contentID, $languageID, $subscriptionType)) { $notification = ezcomNotification::create(); $notification->setAttribute('contentobject_id', $comment->attribute('contentobject_id')); $notification->setAttribute('language_id', $comment->attribute('language_id')); $notification->setAttribute('comment_id', $comment->attribute('id')); $notification->store(); eZDebugSetting::writeNotice('extension-ezcomments', 'There are subscriptions, added an update notification to the queue.', __METHOD__); } else { // todo: if there is no subscription on this content, consider to clean up the queue } return true; }
} if ($Module->isCurrentAction("Cancel")) { return $Module->redirectTo('/content/view/sitemap/5/'); } $http = eZHTTPTool::instance(); if ($Module->isCurrentAction("Edit") || isset($UserParameters['action']) && $UserParameters['action'] === 'edit') { // HACK USER EDIT REDIRECT if ($http->hasPostVariable('UserRedirectURIAfterPublish') && $http->postVariable('UserRedirectURIAfterPublish') != '') { $http->setSessionVariable('RedirectURIAfterPublish', $http->postVariable('UserRedirectURIAfterPublish')); } // FIN HACK USER EDIT REDIRECT $selectedVersion = $http->hasPostVariable('SelectedVersion') ? $http->postVariable('SelectedVersion') : 'f'; $editLanguage = $http->hasPostVariable('ContentObjectLanguageCode') ? $http->postVariable('ContentObjectLanguageCode') : ''; return $Module->redirectTo('/content/edit/' . $UserID . '/' . $selectedVersion . '/' . $editLanguage); } $userAccount = eZUser::fetch($UserID); if (!$userAccount) { return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel'); } $userObject = $userAccount->attribute('contentobject'); if (!$userObject instanceof eZContentObject) { return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel'); } if (!$userObject->canEdit()) { return $Module->handleError(eZError::KERNEL_ACCESS_DENIED, 'kernel'); } $tpl = eZTemplate::factory(); $tpl->setVariable("module", $Module); $tpl->setVariable("http", $http); $tpl->setVariable("userID", $UserID); $tpl->setVariable("userAccount", $userAccount);
/** * Returns the eZUser who owns the object * @return eZUser */ protected function _owner() { static $owner = false; if ($owner === false) { $owner = eZUser::fetch($this->owner_id); } return $owner; }
$tpl->setVariable( 'wrong_email', false ); $tpl->setVariable( 'link', false ); $tpl->setVariable( 'wrong_key', false ); $http = eZHTTPTool::instance(); $module = $Params['Module']; $hashKey = $Params["HashKey"]; $ini = eZINI::instance(); if ( strlen( $hashKey ) == 32 ) { $forgotPasswdObj = eZForgotPassword::fetchByKey( $hashKey ); if ( $forgotPasswdObj ) { $userID = $forgotPasswdObj->attribute( 'user_id' ); $user = eZUser::fetch( $userID ); $email = $user->attribute( 'email' ); $ini = eZINI::instance(); $passwordLength = $ini->variable( "UserSettings", "GeneratePasswordLength" ); $newPassword = eZUser::createPassword( $passwordLength ); $userToSendEmail = $user; $db = eZDB::instance(); $db->begin(); // Change user password if ( eZOperationHandler::operationIsAvailable( 'user_password' ) ) { $operationResult = eZOperationHandler::execute( 'user',
private function updateUserStatus( $enabled = true ) { $userSetting = eZUserSetting::fetch( $this->userObject->attribute( 'id' ) ); $userSetting->setAttribute( 'is_enabled', (int)$enabled ); $userSetting->store(); $eZUser = eZUser::fetch( $this->userObject->attribute( 'id' ) ); if( $enabled ) $this->assertTrue( $eZUser->isEnabled() ); else $this->assertFalse( $eZUser->isEnabled() ); }
static function setFailedLoginAttempts($userID, $value = false, $setByForce = false) { $trustedUser = eZUser::isTrusted(); // If user is trusted we should stop processing if ($trustedUser and !$setByForce) { return true; } $maxNumberOfFailedLogin = eZUser::maxNumberOfFailedLogin(); if ($maxNumberOfFailedLogin == '0' and !$setByForce) { return true; } $userID = (int) $userID; $userObject = eZUser::fetch($userID); if (!$userObject) { return true; } $isEnabled = $userObject->isEnabled(); // If current user is disabled we should not continue if (!$isEnabled and !$setByForce) { return true; } $db = eZDB::instance(); $db->begin(); $userVisitArray = $db->arrayQuery("SELECT 1 FROM ezuservisit WHERE user_id={$userID}"); if (isset($userVisitArray[0])) { if ($value === false) { $failedLoginAttempts = $userObject->failedLoginAttempts(); $failedLoginAttempts += 1; } else { $failedLoginAttempts = (int) $value; } $db->query("UPDATE ezuservisit SET failed_login_attempts={$failedLoginAttempts} WHERE user_id={$userID}"); } else { if ($value === false) { $failedLoginAttempts = 1; } else { $failedLoginAttempts = (int) $value; } $db->query("INSERT INTO ezuservisit ( failed_login_attempts, user_id ) VALUES ( {$failedLoginAttempts}, {$userID} )"); } $db->commit(); eZContentCacheManager::clearContentCacheIfNeeded($userID); eZContentCacheManager::generateObjectViewCache($userID); }
function initializePackage($siteType, &$accessMap, $charset, &$extraLanguageCodes, &$allLanguages, &$primaryLanguage, &$admin, &$resultArray) { // Time limit #3: // We set the time limit to 5 minutes to ensure we have enough time // to initialize the site. However we only set if the current limit // is too small $maxTime = ini_get('max_execution_time'); if ($maxTime != 0 and $maxTime < 5 * 60) { @set_time_limit(5 * 60); } switch ($siteType['access_type']) { case 'port': $userSiteaccessName = $siteType['identifier'] . '_' . 'user'; $adminSiteaccessName = $siteType['identifier'] . '_' . 'admin'; $accessMap['port'][$siteType['access_type_value']] = $userSiteaccessName; $accessMap['port'][$siteType['admin_access_type_value']] = $adminSiteaccessName; break; case 'hostname': $userSiteaccessName = $siteType['identifier'] . '_' . 'user'; $adminSiteaccessName = $siteType['identifier'] . '_' . 'admin'; $accessMap['hostname'][$siteType['access_type_value']] = $userSiteaccessName; $accessMap['hostname'][$siteType['admin_access_type_value']] = $adminSiteaccessName; break; case 'url': default: $userSiteaccessName = $siteType['access_type_value']; $adminSiteaccessName = $siteType['admin_access_type_value']; $accessMap['url'][$siteType['access_type_value']] = $userSiteaccessName; $accessMap['url'][$siteType['admin_access_type_value']] = $adminSiteaccessName; break; } $accessMap['accesses'][] = $userSiteaccessName; $accessMap['accesses'][] = $adminSiteaccessName; $accessMap['sites'][] = $userSiteaccessName; $userDesignName = $siteType['identifier']; $languageObjects = $allLanguages; $databaseMap = eZSetupDatabaseMap(); $databaseInfo = $this->PersistenceList['database_info']; $databaseInfo['info'] = $databaseMap[$databaseInfo['type']]; $dbServer = $databaseInfo['server']; $dbPort = $databaseInfo['port']; // $dbName = $databaseInfo['dbname']; $dbSocket = $databaseInfo['socket']; $dbUser = $databaseInfo['user']; $dbPwd = $databaseInfo['password']; $dbCharset = $charset; $dbDriver = $databaseInfo['info']['driver']; $dbName = $siteType['database']; $dbParameters = array('server' => $dbServer, 'port' => $dbPort, 'user' => $dbUser, 'password' => $dbPwd, 'socket' => $dbSocket, 'database' => $dbName, 'charset' => $dbCharset); $db = eZDB::instance($dbDriver, $dbParameters, true); if (!$db->isConnected()) { $resultArray['errors'][] = array('code' => 'EZSW-005', 'text' => "Failed connecting to database {$dbName}\n" . $db->errorMessage()); return false; } eZDB::setInstance($db); $result = true; // Initialize the database by inserting schema and data if (!isset($siteType['existing_database'])) { $siteType['existing_database'] = false; } if ($siteType['existing_database'] == eZStepInstaller::DB_DATA_REMOVE) { eZDBTool::cleanup($db); } if ($siteType['existing_database'] != eZStepInstaller::DB_DATA_KEEP) { $result = true; $schemaArray = eZDbSchema::read('share/db_schema.dba', true); if (!$schemaArray) { $resultArray['errors'][] = array('code' => 'EZSW-001', 'message' => "Failed loading database schema file share/db_schema.dba"); $result = false; } if ($result) { $result = true; $dataArray = eZDbSchema::read('share/db_data.dba', true); if (!$dataArray) { $resultArray['errors'][] = array('code' => 'EZSW-002', 'text' => "Failed loading database data file share/db_data.dba"); $result = false; } if ($result) { $schemaArray = array_merge($schemaArray, $dataArray); $schemaArray['type'] = strtolower($db->databaseName()); $schemaArray['instance'] = $db; $result = true; $dbSchema = eZDbSchema::instance($schemaArray); if (!$dbSchema) { $resultArray['errors'][] = array('code' => 'EZSW-003', 'text' => "Failed loading " . $db->databaseName() . " schema handler"); $result = false; } if ($result) { $result = true; // This will insert the schema, then the data and // run any sequence value correction SQL if required $params = array('schema' => true, 'data' => true); if ($db->databaseName() == 'mysql') { $engines = $db->arrayQuery('SHOW ENGINES'); foreach ($engines as $engine) { if ($engine['Engine'] == 'InnoDB' && in_array($engine['Support'], array('YES', 'DEFAULT'))) { $params['table_type'] = 'innodb'; break; } } } if (!$dbSchema->insertSchema($params)) { $resultArray['errors'][] = array('code' => 'EZSW-004', 'text' => "Failed inserting data to " . $db->databaseName() . "\n" . $db->errorMessage()); $result = false; } } } } if ($result) { // Inserting data from the dba-data files of the datatypes eZDataType::loadAndRegisterAllTypes(); $registeredDataTypes = eZDataType::registeredDataTypes(); foreach ($registeredDataTypes as $dataType) { if (!$dataType->importDBDataFromDBAFile()) { $resultArray['errors'][] = array('code' => 'EZSW-002', 'text' => "Failed importing datatype related data into database: \n" . 'datatype - ' . $dataType->DataTypeString . ", \n" . 'dba-data file - ' . $dataType->getDBAFilePath()); } } } } if (!$result) { return false; } // Database initialization done // Prepare languages $primaryLanguageLocaleCode = $primaryLanguage->localeCode(); $primaryLanguageName = $primaryLanguage->languageName(); $prioritizedLanguages = array_merge(array($primaryLanguageLocaleCode), $extraLanguageCodes); $installParameters = array('path' => '.'); $installParameters['ini'] = array(); $siteINIChanges = array(); $url = $siteType['url']; if (preg_match("#^[a-zA-Z0-9]+://(.*)\$#", $url, $matches)) { $url = $matches[1]; } $siteINIChanges['SiteAccessSettings'] = array('RelatedSiteAccessList' => $accessMap['accesses']); $siteINIChanges['ContentSettings'] = array('TranslationList' => implode(';', $extraLanguageCodes)); $siteINIChanges['SiteSettings'] = array('SiteName' => $siteType['title'], 'SiteURL' => $url); $siteINIChanges['DatabaseSettings'] = array('DatabaseImplementation' => $dbDriver, 'Server' => $dbServer, 'Port' => $dbPort, 'Database' => $dbName, 'User' => $dbUser, 'Password' => $dbPwd, 'Charset' => false); $siteINIChanges['FileSettings'] = array('VarDir' => 'var/' . $siteType['identifier']); if (trim($dbSocket) != '') { $siteINIChanges['DatabaseSettings']['Socket'] = $dbSocket; } else { $siteINIChanges['DatabaseSettings']['Socket'] = 'disabled'; } if ($admin['email']) { $siteINIChanges['InformationCollectionSettings'] = array('EmailReceiver' => false); $siteINIChanges['UserSettings'] = array('RegistrationEmail' => false); $siteINIChanges['MailSettings'] = array('AdminEmail' => $admin['email'], 'EmailSender' => false); } $siteINIChanges['RegionalSettings'] = array('Locale' => $primaryLanguage->localeFullCode(), 'ContentObjectLocale' => $primaryLanguage->localeCode(), 'SiteLanguageList' => $prioritizedLanguages); if ($primaryLanguage->localeCode() == 'eng-GB') { $siteINIChanges['RegionalSettings']['TextTranslation'] = 'disabled'; } else { $siteINIChanges['RegionalSettings']['TextTranslation'] = 'enabled'; } $installParameters['ini']['siteaccess'][$adminSiteaccessName]['site.ini.append'] = $siteINIChanges; $installParameters['ini']['siteaccess'][$userSiteaccessName]['site.ini.append'] = $siteINIChanges; $installParameters['ini']['siteaccess'][$userSiteaccessName]['site.ini']['DesignSettings'] = array('SiteDesign' => $userDesignName); $installParameters['variables']['user_siteaccess'] = $userSiteaccessName; $installParameters['variables']['admin_siteaccess'] = $adminSiteaccessName; $installParameters['variables']['design'] = $userDesignName; $tmpSiteINI = eZINI::create('site.ini'); // Set ReadOnlySettingsCheck to false: towards // Ignore site.ini[eZINISettings].ReadonlySettingList[] settings when saving ini variables. $tmpSiteINI->setReadOnlySettingsCheck(false); $tmpSiteINI->setVariable('FileSettings', 'VarDir', $siteINIChanges['FileSettings']['VarDir']); // Change the current translation variables, before other parts start using them $tmpSiteINI->setVariable('RegionalSettings', 'Locale', $siteINIChanges['RegionalSettings']['Locale']); $tmpSiteINI->setVariable('RegionalSettings', 'ContentObjectLocale', $siteINIChanges['RegionalSettings']['ContentObjectLocale']); $tmpSiteINI->setVariable('RegionalSettings', 'TextTranslation', $siteINIChanges['RegionalSettings']['TextTranslation']); $tmpSiteINI->save(false, '.append.php', false, true, "settings/siteaccess/{$userSiteaccessName}"); /* $typeFunctionality = eZSetupFunctionality( $siteType['identifier'] ); $extraFunctionality = array_merge( isset( $this->PersistenceList['additional_packages'] ) ? $this->PersistenceList['additional_packages'] : array(), $typeFunctionality['required'] ); $extraFunctionality = array_unique( $extraFunctionality ); */ // Add a policy to permit editors using OE eZPolicy::createNew(3, array('ModuleName' => 'ezoe', 'FunctionName' => '*')); // Install site package and it's required packages $sitePackageName = $this->chosenSitePackage(); $sitePackage = eZPackage::fetch($sitePackageName); if (!is_object($sitePackage)) { $resultArray['errors'][] = array('code' => 'EZSW-041', 'text' => " Could not fetch site package: '{$sitePackageName}'"); return false; } $dependecies = $sitePackage->attribute('dependencies'); $requires = $dependecies['requires']; $requiredPackages = array(); // Include setting files $settingsFiles = $sitePackage->attribute('settings-files'); foreach ($settingsFiles as $settingsFileName) { if (file_exists($sitePackage->path() . '/settings/' . $settingsFileName)) { include_once $sitePackage->path() . '/settings/' . $settingsFileName; } } // Call user function for additional setup tasks. if (function_exists('eZSitePreInstall')) { eZSitePreInstall($siteType); } // Make sure objects use the selected main language instead of eng-GB if ($primaryLanguageLocaleCode != 'eng-GB') { $engLanguageObj = eZContentLanguage::fetchByLocale('eng-GB'); $engLanguageID = (int) $engLanguageObj->attribute('id'); $updateSql = "UPDATE ezcontent_language\nSET\nlocale='{$primaryLanguageLocaleCode}',\nname='{$primaryLanguageName}'\nWHERE\nid={$engLanguageID}"; $db->query($updateSql); eZContentLanguage::expireCache(); $primaryLanguageObj = eZContentLanguage::fetchByLocale($primaryLanguageLocaleCode); // Add it if it is missing (most likely) if (!$primaryLanguageObj) { $primaryLanguageObj = eZContentLanguage::addLanguage($primaryLanguageLocaleCode, $primaryLanguageName); } $primaryLanguageID = (int) $primaryLanguageObj->attribute('id'); // Find objects which are always available if ($db->databaseName() == 'oracle') { $sql = "SELECT id\nFROM\nezcontentobject\nWHERE\nbitand( language_mask, 1 ) = 1"; } else { $sql = "SELECT id\nFROM\nezcontentobject\nWHERE\nlanguage_mask & 1 = 1"; } $objectList = array(); $list = $db->arrayQuery($sql); foreach ($list as $row) { $objectList[] = (int) $row['id']; } $inSql = 'IN ( ' . implode(', ', $objectList) . ')'; // Updates databases that have eng-GB data to the new locale. $updateSql = "UPDATE ezcontentobject_name\nSET\ncontent_translation='{$primaryLanguageLocaleCode}',\nreal_translation='{$primaryLanguageLocaleCode}',\nlanguage_id={$primaryLanguageID}\nWHERE\ncontent_translation='eng-GB' OR\nreal_translation='eng-GB'"; $db->query($updateSql); // Fix always available $updateSql = "UPDATE ezcontentobject_name\nSET\nlanguage_id=language_id+1\nWHERE\ncontentobject_id {$inSql}"; $db->query($updateSql); // attributes $updateSql = "UPDATE ezcontentobject_attribute\nSET\nlanguage_code='{$primaryLanguageLocaleCode}',\nlanguage_id={$primaryLanguageID}\nWHERE\nlanguage_code='eng-GB'"; $db->query($updateSql); // Fix always available $updateSql = "UPDATE ezcontentobject_attribute\nSET\nlanguage_id=language_id+1\nWHERE\ncontentobject_id {$inSql}"; $db->query($updateSql); // version $updateSql = "UPDATE ezcontentobject_version\nSET\ninitial_language_id={$primaryLanguageID},\nlanguage_mask={$primaryLanguageID}\nWHERE\ninitial_language_id={$engLanguageID}"; $db->query($updateSql); // Fix always available $updateSql = "UPDATE ezcontentobject_version\nSET\nlanguage_mask=language_mask+1\nWHERE\ncontentobject_id {$inSql}"; $db->query($updateSql); // object $updateSql = "UPDATE ezcontentobject\nSET\ninitial_language_id={$primaryLanguageID},\nlanguage_mask={$primaryLanguageID}\nWHERE\ninitial_language_id={$engLanguageID}"; $db->query($updateSql); // Fix always available $updateSql = "UPDATE ezcontentobject\nSET\nlanguage_mask=language_mask+1\nWHERE\nid {$inSql}"; $db->query($updateSql); // content object state groups & states $mask = $primaryLanguageID | 1; $db->query("UPDATE ezcobj_state_group\n SET language_mask = {$mask}, default_language_id = {$primaryLanguageID}\n WHERE default_language_id = {$engLanguageID}"); $db->query("UPDATE ezcobj_state\n SET language_mask = {$mask}, default_language_id = {$primaryLanguageID}\n WHERE default_language_id = {$engLanguageID}"); $db->query("UPDATE ezcobj_state_group_language\n SET language_id = {$primaryLanguageID}\n WHERE language_id = {$engLanguageID}"); $db->query("UPDATE ezcobj_state_language\n SET language_id = {$primaryLanguageID}\n WHERE language_id = {$engLanguageID}"); // ezcontentclass_name $updateSql = "UPDATE ezcontentclass_name\nSET\nlanguage_locale='{$primaryLanguageLocaleCode}'\nWHERE\nlanguage_locale='eng-GB'"; $db->query($updateSql); // use high-level api, because it's impossible to update serialized names with direct sqls. // use direct access to 'NameList' to avoid unnecessary sql-requests and because // we do 'replacement' of existing language(with some 'id') with another language code. $contentClassList = eZContentClass::fetchList(); foreach ($contentClassList as $contentClass) { $classAttributes = $contentClass->fetchAttributes(); foreach ($classAttributes as $classAttribute) { $classAttribute->NameList->setName($classAttribute->NameList->name('eng-GB'), $primaryLanguageLocaleCode); $classAttribute->NameList->setAlwaysAvailableLanguage($primaryLanguageLocaleCode); $classAttribute->NameList->removeName('eng-GB'); $classAttribute->store(); } $contentClass->NameList->setName($contentClass->NameList->name('eng-GB'), $primaryLanguageLocaleCode); $contentClass->NameList->setAlwaysAvailableLanguage($primaryLanguageLocaleCode); $contentClass->NameList->removeName('eng-GB'); $contentClass->NameList->setHasDirtyData(false); // to not update 'ezcontentclass_name', because we've already updated it. $contentClass->store(); } } // Setup all languages foreach ($allLanguages as $languageObject) { $primaryLanguageObj = eZContentLanguage::fetchByLocale($languageObject->localeCode()); // Add it if it is missing (most likely) if (!$primaryLanguageObj) { $primaryLanguageObj = eZContentLanguage::addLanguage($languageObject->localeCode(), $languageObject->internationalLanguageName()); } } eZContentLanguage::expireCache(); // Make sure priority list is changed to the new chosen languages eZContentLanguage::setPrioritizedLanguages($prioritizedLanguages); if ($siteType['existing_database'] != eZStepInstaller::DB_DATA_KEEP) { $user = eZUser::instance(14); // Must be initialized to make node assignments work correctly if (!is_object($user)) { $resultArray['errors'][] = array('code' => 'EZSW-020', 'text' => "Could not fetch administrator user object"); return false; } // Make sure Admin is the currently logged in user // This makes sure all new/changed objects get this as creator $user->loginCurrent(); // by default(if 'language_map' is not set) create all necessary languages $languageMap = isset($this->PersistenceList['package_info']) && isset($this->PersistenceList['package_info']['language_map']) ? $this->PersistenceList['package_info']['language_map'] : true; if (is_array($languageMap) && count($languageMap) > 0) { // // Create necessary languages and set them as "prioritized languages" to avoid // drawbacks in fetch functions, like eZContentObjectTreeNode::fetch(). // $prioritizedLanguageObjects = eZContentLanguage::prioritizedLanguages(); // returned objects foreach ($languageMap as $fromLanguage => $toLanguage) { if ($toLanguage != 'skip') { $prioritizedLanguageObjects[] = eZContentLanguage::fetchByLocale($toLanguage, true); } } $prioritizedLanguageLocales = array(); foreach ($prioritizedLanguageObjects as $language) { $locale = $language->attribute('locale'); if (!in_array($locale, $prioritizedLanguageLocales)) { $prioritizedLanguageLocales[] = $locale; } } eZContentLanguage::setPrioritizedLanguages($prioritizedLanguageLocales); } foreach ($requires as $require) { if ($require['type'] != 'ezpackage') { continue; } $packageName = $require['name']; $package = eZPackage::fetch($packageName, false, false, false); if (is_object($package)) { $requiredPackages[] = $package; if ($package->attribute('install_type') == 'install') { $installParameters = array('use_dates_from_package' => true, 'site_access_map' => array('*' => $userSiteaccessName), 'top_nodes_map' => array('*' => 2), 'design_map' => array('*' => $userDesignName), 'language_map' => $languageMap, 'restore_dates' => true, 'user_id' => $user->attribute('contentobject_id'), 'non-interactive' => true); $status = $package->install($installParameters); if (!$status) { $errorText = "Unable to install package '{$packageName}'"; if (isset($installParameters['error']['description'])) { $errorText .= ": " . $installParameters['error']['description']; } $resultArray['errors'][] = array('code' => 'EZSW-051', 'text' => $errorText); return false; } } } else { $resultArray['errors'][] = array('code' => 'EZSW-050', 'text' => "Could not fetch required package: '{$packageName}'"); return false; } unset($package); } } $GLOBALS['eZContentObjectDefaultLanguage'] = $primaryLanguageLocaleCode; $nodeRemoteMap = array(); $rows = $db->arrayQuery("SELECT node_id, remote_id FROM ezcontentobject_tree"); foreach ($rows as $row) { $remoteID = $row['remote_id']; if (strlen(trim($remoteID)) > 0) { $nodeRemoteMap[$remoteID] = $row['node_id']; } } $objectRemoteMap = array(); $rows = $db->arrayQuery("SELECT id, remote_id FROM ezcontentobject"); foreach ($rows as $row) { $remoteID = $row['remote_id']; if (strlen(trim($remoteID)) > 0) { $objectRemoteMap[$remoteID] = $row['id']; } } $classRemoteMap = array(); $rows = $db->arrayQuery("SELECT id, identifier, remote_id FROM ezcontentclass"); foreach ($rows as $row) { $remoteID = $row['remote_id']; if (strlen(trim($remoteID)) > 0) { $classRemoteMap[$remoteID] = array('id' => $row['id'], 'identifier' => $row['identifier']); } } $siteCSS = false; $classesCSS = false; foreach ($requiredPackages as $package) { if ($package->attribute('type') == 'sitestyle') { $fileList = $package->fileList('default'); foreach ($fileList as $file) { $fileIdentifier = $file["variable-name"]; if ($fileIdentifier == 'sitecssfile') { $siteCSS = $package->fileItemPath($file, 'default'); } else { if ($fileIdentifier == 'classescssfile') { $classesCSS = $package->fileItemPath($file, 'default'); } } } } } $parameters = array('node_remote_map' => $nodeRemoteMap, 'object_remote_map' => $objectRemoteMap, 'class_remote_map' => $classRemoteMap, 'preview_design' => $userDesignName, 'design_list' => array($userDesignName, 'admin2', 'admin'), 'user_siteaccess' => $userSiteaccessName, 'admin_siteaccess' => $adminSiteaccessName, 'package_object' => $sitePackage, 'siteaccess_urls' => $this->siteaccessURLs(), 'access_map' => $accessMap, 'site_type' => $siteType, 'all_language_codes' => $prioritizedLanguages); $siteINIStored = false; $siteINIAdminStored = false; $designINIStored = false; if (function_exists('eZSiteINISettings')) { $extraSettings = eZSiteINISettings($parameters); } else { $extraSettings = array(); } if (function_exists('eZSiteAdminINISettings')) { $extraAdminSettings = eZSiteAdminINISettings($parameters); } else { $extraAdminSettings = array(); } if (function_exists('eZSiteCommonINISettings')) { $extraCommonSettings = eZSiteCommonINISettings($parameters); } else { $extraCommonSettings = array(); } $isUntranslatedSettingAdded = false; foreach ($extraAdminSettings as $key => $extraAdminSetting) { if ($extraAdminSetting['name'] == 'site.ini') { $extraAdminSettings[$key]['settings']['RegionalSettings']['ShowUntranslatedObjects'] = 'enabled'; $isUntranslatedSettingAdded = true; break; } } if (!$isUntranslatedSettingAdded) { $extraAdminSettings[] = array('name' => 'site.ini', 'settings' => array('RegionalSettings' => array('ShowUntranslatedObjects' => 'enabled'))); } // Enable OE and ODF extensions by default $extensionsToEnable = array(); // Included in "fat" install, needs to override $extraCommonSettings extensions $extensionsPrepended = array('ezjscore', 'ezoe', 'ezformtoken'); foreach (array('ezie', 'ezodf', 'ezprestapiprovider', 'ezmultiupload', 'eztags', 'ezautosave', 'ez_network', 'ez_network_demo') as $extension) { if (file_exists("extension/{$extension}")) { $extensionsToEnable[] = $extension; } } $settingAdded = false; foreach ($extraCommonSettings as $key => $extraCommonSetting) { if ($extraCommonSetting['name'] == 'site.ini' && isset($extraCommonSettings[$key]['settings']['ExtensionSettings']['ActiveExtensions'])) { $settingAdded = true; $extraCommonSettings[$key]['settings']['ExtensionSettings']['ActiveExtensions'] = array_merge($extensionsPrepended, $extraCommonSettings[$key]['settings']['ExtensionSettings']['ActiveExtensions'], $extensionsToEnable); break; } } if (!$settingAdded) { $extraCommonSettings[] = array('name' => 'site.ini', 'settings' => array('ExtensionSettings' => array('ActiveExtensions' => array_merge($extensionsPrepended, $extensionsToEnable)))); } // Enable dynamic tree menu for the admin interface by default $enableDynamicTreeMenuAdded = false; foreach ($extraAdminSettings as $key => $extraSetting) { if ($extraSetting['name'] == 'contentstructuremenu.ini') { if (isset($extraSetting['settings']['TreeMenu'])) { $extraAdminSettings[$key]['settings']['TreeMenu']['Dynamic'] = 'enabled'; } else { $extraAdminSettings[$key]['settings'] = array('TreeMenu' => array('Dynamic' => 'enabled')); } $enableDynamicTreeMenuAdded = true; break; } } if (!$enableDynamicTreeMenuAdded) { $extraAdminSettings[] = array('name' => 'contentstructuremenu.ini', 'settings' => array('TreeMenu' => array('Dynamic' => 'enabled'))); } $resultArray['common_settings'] = $extraCommonSettings; foreach ($extraSettings as $extraSetting) { if ($extraSetting === false) { continue; } $iniName = $extraSetting['name']; $settings = $extraSetting['settings']; $resetArray = false; if (isset($extraSetting['reset_arrays'])) { $resetArray = $extraSetting['reset_arrays']; } $tmpINI = eZINI::create($iniName); // Set ReadOnlySettingsCheck to false: towards // Ignore site.ini[eZINISettings].ReadonlySettingList[] settings when saving ini variables. $tmpINI->setReadOnlySettingsCheck(false); $tmpINI->setVariables($settings); if ($iniName == 'site.ini') { $siteINIStored = true; $tmpINI->setVariables($siteINIChanges); $tmpINI->setVariable('DesignSettings', 'SiteDesign', $userDesignName); $tmpINI->setVariable('DesignSettings', 'AdditionalSiteDesignList', array('base')); } else { if ($iniName == 'design.ini') { if ($siteCSS) { $tmpINI->setVariable('StylesheetSettings', 'SiteCSS', $siteCSS); } if ($classesCSS) { $tmpINI->setVariable('StylesheetSettings', 'ClassesCSS', $classesCSS); } $designINIStored = true; } } $tmpINI->save(false, '.append.php', false, true, "settings/siteaccess/{$userSiteaccessName}", $resetArray); if ($siteType['existing_database'] != eZStepInstaller::DB_DATA_KEEP) { // setting up appropriate data in look&feel object $templateLookClass = eZContentClass::fetchByIdentifier('template_look', true); if ($templateLookClass) { $objectList = $templateLookClass->objectList(); if ($objectList and count($objectList) > 0) { $templateLookObject = current($objectList); $dataMap = $templateLookObject->fetchDataMap(); if (isset($dataMap['title'])) { $dataMap['title']->setAttribute('data_text', $siteINIChanges['SiteSettings']['SiteName']); $dataMap['title']->store(); } if (isset($dataMap['siteurl'])) { $dataMap['siteurl']->setAttribute('data_text', $siteINIChanges['SiteSettings']['SiteURL']); $dataMap['siteurl']->store(); } if (isset($dataMap['email'])) { $dataMap['email']->setAttribute('data_text', $siteINIChanges['MailSettings']['AdminEmail']); $dataMap['email']->store(); } $objectName = $templateLookClass->contentObjectName($templateLookObject); $templateLookObject->setName($objectName); $templateLookObject->store(); } } } } foreach ($extraAdminSettings as $extraSetting) { if ($extraSetting === false) { continue; } $iniName = $extraSetting['name']; $settings = $extraSetting['settings']; $resetArray = false; if (isset($extraSetting['reset_arrays'])) { $resetArray = $extraSetting['reset_arrays']; } $tmpINI = eZINI::create($iniName); $tmpINI->setVariables($settings); if ($iniName == 'site.ini') { $siteINIAdminStored = true; $tmpINI->setVariables($siteINIChanges); $tmpINI->setVariable('SiteAccessSettings', 'RequireUserLogin', 'true'); $tmpINI->setVariable('DesignSettings', 'SiteDesign', 'admin2'); $tmpINI->setVariable('DesignSettings', 'AdditionalSiteDesignList', array('admin')); $tmpINI->setVariable('SiteSettings', 'LoginPage', 'custom'); $tmpINI->setVariable('SiteSettings', 'DefaultPage', 'content/dashboard'); } $tmpINI->save(false, '.append.php', false, true, "settings/siteaccess/{$adminSiteaccessName}", $resetArray); } if (!$siteINIAdminStored) { $siteINI = eZINI::create('site.ini'); // Set ReadOnlySettingsCheck to false: towards // Ignore site.ini[eZINISettings].ReadonlySettingList[] settings when saving ini variables. $siteINI->setReadOnlySettingsCheck(false); $siteINI->setVariables($siteINIChanges); $siteINI->setVariable('SiteAccessSettings', 'RequireUserLogin', 'true'); $siteINI->setVariable('DesignSettings', 'SiteDesign', 'admin2'); $tmpINI->setVariable('DesignSettings', 'AdditionalSiteDesignList', array('admin')); $siteINI->setVariable('SiteSettings', 'LoginPage', 'custom'); $siteINI->setVariable('SiteSettings', 'DefaultPage', 'content/dashboard'); $siteINI->save(false, '.append.php', false, false, "settings/siteaccess/{$adminSiteaccessName}", true); } if (!$siteINIStored) { $siteINI = eZINI::create('site.ini'); // Set ReadOnlySettingsCheck to false: towards // Ignore site.ini[eZINISettings].ReadonlySettingList[] settings when saving ini variables. $siteINI->setReadOnlySettingsCheck(false); $siteINI->setVariables($siteINIChanges); $siteINI->setVariable('DesignSettings', 'SiteDesign', $userDesignName); $siteINI->setVariable('DesignSettings', 'AdditionalSiteDesignList', array('base')); $siteINI->save(false, '.append.php', false, true, "settings/siteaccess/{$userSiteaccessName}", true); } if (!$designINIStored) { $designINI = eZINI::create('design.ini'); // Set ReadOnlySettingsCheck to false: towards // Ignore site.ini[eZINISettings].ReadonlySettingList[] settings when saving ini variables. $designINI->setReadOnlySettingsCheck(false); if ($siteCSS) { $designINI->setVariable('StylesheetSettings', 'SiteCSS', $siteCSS); } if ($classesCSS) { $designINI->setVariable('StylesheetSettings', 'ClassesCSS', $classesCSS); } $designINI->save(false, '.append.php', false, true, "settings/siteaccess/{$userSiteaccessName}"); } eZDir::mkdir("design/" . $userDesignName); eZDir::mkdir("design/" . $userDesignName . "/templates"); eZDir::mkdir("design/" . $userDesignName . "/stylesheets"); eZDir::mkdir("design/" . $userDesignName . "/images"); eZDir::mkdir("design/" . $userDesignName . "/override"); eZDir::mkdir("design/" . $userDesignName . "/override/templates"); if ($siteType['existing_database'] == eZStepInstaller::DB_DATA_KEEP) { return true; } // Try and remove user/login without limitation from the anonymous user $anonRole = eZRole::fetchByName('Anonymous'); if (is_object($anonRole)) { $anonPolicies = $anonRole->policyList(); foreach ($anonPolicies as $anonPolicy) { if ($anonPolicy->attribute('module_name') == 'user' and $anonPolicy->attribute('function_name') == 'login') { $anonPolicy->removeThis(); break; } } } // Setup all roles according to site chosen and addons if (function_exists('eZSiteRoles')) { $extraRoles = eZSiteRoles($parameters); foreach ($extraRoles as $extraRole) { if (!$extraRole) { continue; } $extraRoleName = $extraRole['name']; $role = eZRole::fetchByName($extraRoleName); if (!is_object($role)) { $role = eZRole::create($extraRoleName); $role->store(); } $roleID = $role->attribute('id'); if (isset($extraRole['policies'])) { $extraPolicies = $extraRole['policies']; foreach ($extraPolicies as $extraPolicy) { if (isset($extraPolicy['limitation'])) { $role->appendPolicy($extraPolicy['module'], $extraPolicy['function'], $extraPolicy['limitation']); } else { $role->appendPolicy($extraPolicy['module'], $extraPolicy['function']); } } } if (isset($extraRole['assignments'])) { $roleAssignments = $extraRole['assignments']; foreach ($roleAssignments as $roleAssignment) { $assignmentIdentifier = false; $assignmentValue = false; if (isset($roleAssignment['limitation'])) { $assignmentIdentifier = $roleAssignment['limitation']['identifier']; $assignmentValue = $roleAssignment['limitation']['value']; } $role->assignToUser($roleAssignment['user_id'], $assignmentIdentifier, $assignmentValue); } } } } // Setup user preferences based on the site chosen and addons if (function_exists('eZSitePreferences')) { $prefs = eZSitePreferences($parameters); foreach ($prefs as $prefEntry) { if (!$prefEntry) { continue; } $prefUserID = $prefEntry['user_id']; foreach ($prefEntry['preferences'] as $pref) { $prefName = $pref['name']; $prefValue = $pref['value']; if (!eZPreferences::setValue($prefName, $prefValue, $prefUserID)) { $resultArray['errors'][] = array('code' => 'EZSW-070', 'text' => "Could not create ezpreference '{$prefValue}' for {$prefUserID}"); return false; } } } } $publishAdmin = false; $userAccount = eZUser::fetch(14); if (!is_object($userAccount)) { $resultArray['errors'][] = array('code' => 'EZSW-020', 'text' => "Could not fetch administrator user object"); return false; } $userObject = $userAccount->attribute('contentobject'); if (!is_object($userObject)) { $resultArray['errors'][] = array('code' => 'EZSW-021', 'text' => "Could not fetch administrator content object"); return false; } $newUserObject = $userObject->createNewVersion(false, false); if (!is_object($newUserObject)) { $resultArray['errors'][] = array('code' => 'EZSW-022', 'text' => "Could not create new version of administrator content object"); return false; } $dataMap = $newUserObject->attribute('data_map'); $error = false; if (trim($admin['email'])) { if (!isset($dataMap['user_account'])) { $resultArray['errors'][] = array('code' => 'EZSW-023', 'text' => "Administrator content object does not have a 'user_account' attribute"); return false; } $userAccount->setInformation(14, 'admin', $admin['email'], $admin['password'], $admin['password']); $dataMap['user_account']->setContent($userAccount); $dataMap['user_account']->store(); $publishAdmin = true; $userAccount->store(); } if (trim($admin['first_name']) or trim($admin['last_name'])) { if (!isset($dataMap['first_name'])) { $resultArray['errors'][] = array('code' => 'EZSW-023', 'text' => "Administrator content object does not have a 'first_name' field"); $error = true; } if (!isset($dataMap['last_name'])) { $resultArray['errors'][] = array('code' => 'EZSW-024', 'text' => "Administrator content object does not have a 'last_name' field"); $error = true; } if ($error) { return false; } $dataMap['first_name']->setAttribute('data_text', $admin['first_name']); $dataMap['first_name']->store(); $dataMap['last_name']->setAttribute('data_text', $admin['last_name']); $dataMap['last_name']->store(); $newUserObject->store(); $publishAdmin = true; } if ($publishAdmin) { $operationResult = eZOperationHandler::execute('content', 'publish', array('object_id' => $newUserObject->attribute('contentobject_id'), 'version' => $newUserObject->attribute('version'))); if ($operationResult['status'] != eZModuleOperationInfo::STATUS_CONTINUE) { $resultArray['errors'][] = array('code' => 'EZSW-025', 'text' => "Failed to properly publish the administrator object"); return false; } } // Call user function for additional setup tasks. if (function_exists('eZSitePostInstall')) { eZSitePostInstall($parameters); } // get all siteaccesses. do it via 'RelatedSiteAccessesList' settings. $adminSiteINI = eZINI::instance('site.ini' . '.append.php', "settings/siteaccess/{$adminSiteaccessName}"); $relatedSiteAccessList = $adminSiteINI->variable('SiteAccessSettings', 'RelatedSiteAccessList'); // Adding override for 'tiny_image' view for 'multi-option2' datatype foreach ($relatedSiteAccessList as $siteAccess) { $tmpOverrideINI = new eZINI('override.ini' . '.append.php', "settings/siteaccess/{$siteAccess}", null, null, null, true, true); $tmpOverrideINI->setVariable('tiny_image', 'Source', 'content/view/tiny.tpl'); $tmpOverrideINI->setVariable('tiny_image', 'MatchFile', 'tiny_image.tpl'); $tmpOverrideINI->setVariable('tiny_image', 'Subdir', 'templates'); $tmpOverrideINI->setVariable('tiny_image', 'Match', array('class_identifier' => 'image')); $tmpOverrideINI->save(); } $accessMap = $parameters['access_map']; // Call user function for some text which will be displayed at 'Finish' screen if (function_exists('eZSiteFinalText')) { $text = eZSiteFinalText($parameters); if (!isset($this->PersistenceList['final_text'])) { $this->PersistenceList['final_text'] = array(); } $this->PersistenceList['final_text'][] = $text; } // ensure that evaluated policy wildcards in the user info cache // will be up to date with the currently activated modules eZCache::clearByID('user_info_cache'); return true; }
/** * Generate forgotpassword object * * @param int $userID * @param string $passwordHash * @param int $time * * @return array An array with operation status, always true if userID is ok */ public static function forgotpassword($userID, $passwordHash, $time) { $user = eZUser::fetch($userID); if ($user instanceof eZUser) { $forgotPasswdObj = eZForgotPassword::createNew($userID, $passwordHash, $time); $forgotPasswdObj->store(); return array('status' => true); } else { eZDebug::writeError("Failed to generate password hash for user {$userID} (could not fetch user)", __METHOD__); return array('status' => false); } }
*/ $cli->output("eZPaEx: Send expiry notifications process start"); ini_set('max_execution_time', 0); ini_set('memory_limit', '-1'); eZDebug::addTimingPoint('Fetch notification pending list'); $paexPendingList = eZPaEx::fetchExpiryNotificationPendingList(); $paexPendingListCount = count($paexPendingList); if (!$paexPendingListCount) { $cli->output("No pending update notifications found"); } else { $cli->output("Found " . $paexPendingListCount . " objects pending notification, send notifications:"); $totalNotificationsSent = 0; eZDebug::addTimingPoint('Send notifications'); foreach ($paexPendingList as $paexObject) { $userID = $paexObject->attribute('contentobject_id'); $userObject = eZUser::fetch($userID); if ($userObject instanceof eZUser && $userObject->isEnabled()) { if (!$paexObject->sendExpiryNotification($userObject)) { $cli->output("Error sending notification. UserID: " . $userID); } else { $cli->output("Notification sent ok. UserID: " . $userID); $paexObject->setExpiryNotificationSent(); $totalNotificationsSent++; } } else { $cli->output("Error user_object disabled or not found. UserID: " . $userID); } } $cli->output("Sent " . $totalNotificationsSent . " notifications."); } $cli->output("eZPaEx: Send expiry notifications process end");
function checkContentActions($module, $class, $object, $version, $contentObjectAttributes, $EditVersion, $EditLanguage) { if ($module->isCurrentAction('Cancel')) { $http = eZHTTPTool::instance(); if ($http->hasPostVariable('RedirectIfDiscarded')) { eZRedirectManager::redirectTo($module, $http->postVariable('RedirectIfDiscarded')); } else { eZRedirectManager::redirectTo($module, '/'); } $version->removeThis(); $http = eZHTTPTool::instance(); $http->removeSessionVariable("RegisterUserID"); $http->removeSessionVariable('StartedRegistration'); return eZModule::HOOK_STATUS_CANCEL_RUN; } if ($module->isCurrentAction('Publish')) { $userID = $object->attribute('id'); $operationResult = eZOperationHandler::execute('user', 'register', array('user_id' => $userID)); // send feedback $ini = eZINI::instance(); $tpl = eZTemplate::factory(); $hostname = eZSys::hostname(); $user = eZUser::fetch($userID); $feedbackTypes = $ini->variableArray('UserSettings', 'RegistrationFeedback'); foreach ($feedbackTypes as $feedbackType) { switch ($feedbackType) { case 'email': // send feedback with the default email type $mail = new eZMail(); $tpl->resetVariables(); $tpl->setVariable('user', $user); $tpl->setVariable('object', $object); $tpl->setVariable('hostname', $hostname); $templateResult = $tpl->fetch('design:user/registrationfeedback.tpl'); if ($tpl->hasVariable('content_type')) { $mail->setContentType($tpl->variable('content_type')); } $emailSender = $ini->variable('MailSettings', 'EmailSender'); if ($tpl->hasVariable('email_sender')) { $emailSender = $tpl->variable('email_sender'); } else { if (!$emailSender) { $emailSender = $ini->variable('MailSettings', 'AdminEmail'); } } $feedbackReceiver = $ini->variable('UserSettings', 'RegistrationEmail'); if ($tpl->hasVariable('email_receiver')) { $feedbackReceiver = $tpl->variable('email_receiver'); } else { if (!$feedbackReceiver) { $feedbackReceiver = $ini->variable('MailSettings', 'AdminEmail'); } } if ($tpl->hasVariable('subject')) { $subject = $tpl->variable('subject'); } else { $subject = ezpI18n::tr('kernel/user/register', 'New user registered'); } $mail->setSender($emailSender); $mail->setReceiver($feedbackReceiver); $mail->setSubject($subject); $mail->setBody($templateResult); $mailResult = eZMailTransport::send($mail); break; default: $registrationFeedbackClass = false; // load custom registration feedback settings if ($ini->hasGroup('RegistrationFeedback_' . $feedbackType)) { if ($ini->hasVariable('RegistrationFeedback_' . $feedbackType, 'File')) { include_once $ini->variable('RegistrationFeedback_' . $feedbackType, 'File'); } $registrationFeedbackClass = $ini->variable('RegistrationFeedback_' . $feedbackType, 'Class'); } // try to call the registration feedback class with function registrationFeedback if ($registrationFeedbackClass && method_exists($registrationFeedbackClass, 'registrationFeedback')) { call_user_func(array($registrationFeedbackClass, 'registrationFeedback'), $user, $tpl, $object, $hostname); } else { eZDebug::writeWarning("Unknown feedback type '{$feedbackType}'", 'user/register'); } } } $http = eZHTTPTool::instance(); $http->removeSessionVariable("GeneratedPassword"); $http->removeSessionVariable("RegisterUserID"); $http->removeSessionVariable('StartedRegistration'); // if everything is passed, login the user if ($operationResult['status'] === eZModuleOperationInfo::STATUS_CONTINUE) { $user->loginCurrent(); } // check for redirectionvariable if ($operationResult['status'] === eZModuleOperationInfo::STATUS_CONTINUE || $operationResult['status'] === eZModuleOperationInfo::STATUS_HALTED) { if ($http->hasSessionVariable('RedirectAfterUserRegister')) { $module->redirectTo($http->sessionVariable('RedirectAfterUserRegister')); $http->removeSessionVariable('RedirectAfterUserRegister'); } else { if ($http->hasPostVariable('RedirectAfterUserRegister')) { $module->redirectTo($http->postVariable('RedirectAfterUserRegister')); } else { $module->redirectTo('/user/success/'); } } } else { eZDebug::writeError('Unexpected operation status: ' . $operationResult['status'], 'user/register'); // @todo: finish the failure code $module->redirectTo('/user/register/5'); } } }
function creator() { $creator = eZUser::fetch( $this->attribute( 'creator_id' ) ); return $creator; }
public function tearDown() { eZUser::setCurrentlyLoggedInUser(eZUser::fetch(self::$previousUserID), self::$previousUserID); parent::tearDown(); }
* @package kernel */ require 'autoload.php'; $cli = eZCLI::instance(); $script = eZScript::instance(array('description' => "\nThis script is optional for upgrading to 3.10.\n" . "The script adds a role which contains a policy 'content/tipafriend' and" . "\nassigns this role to all user groups except anonymous. That will give " . "\npossibility to use tipafriend view for all users except anonymous." . "\n\nNote: siteacces, login and password options are required and" . "\nmust to be set to admin siteaccess and admin login/passsword accordingly" . "\n\n(See doc/feature/(3.8|3.9|3.10)/content_tipafriend_policy.txt for more information).", 'use-session' => false, 'use-modules' => false, 'use-extensions' => true)); $script->startup(); $options = $script->getOptions('', '', false, false, array('siteaccess' => true, 'user' => true)); $siteAccess = $options['siteaccess'] ? $options['siteaccess'] : false; $script->setUseSiteAccess($siteAccess); $script->initialize(); $cli->output("\nStart."); $contentIni = eZINI::instance('content.ini'); $userRootNodeID = $contentIni->variable('NodeSettings', 'UserRootNode'); $siteIni = eZINI::instance('site.ini'); $anonymousUserID = $siteIni->variable('UserSettings', 'AnonymousUserID'); $anonymousUser = eZUser::fetch($anonymousUserID); $anonymousUsers = array(); if (is_object($anonymousUser)) { $anonymousUsers = $anonymousUser->groups(); $anonymousUsers[] = $anonymousUserID; } $topUserNodes = eZContentObjectTreeNode::subTreeByNodeID(array('Depth' => 1), $userRootNodeID); if (count($topUserNodes) == 0) { $cli->warning("Unable to retrieve the user root node. Please make sure\n" . "you log in to the system with the administrator's user\n" . "acount by using the -l and -p command line options."); $script->shutdown(1); } $roleName = 'Tipafriend Role'; $role = eZRole::fetchByName($roleName); if (is_object($role)) { $cli->warning("The 'Tipafriend Role' already exists in the system. This means that\n" . "the script was already run before or the same role was added manually.\n" . "The role will not be added. Check the role settings of the system."); } else {
/** * Returns the anonymous role */ protected function getRole() { $roles = eZUser::fetch(eZINI::instance()->variable('UserSettings', 'AnonymousUserID'))->roles(); return current($roles); }
function user() { return eZUser::fetch( $this->attribute( 'user_id' ) ); }