/** * Support for dynamic ini settings: Prepend dynamic ini cache files on activation * * * @param string $siteaccess the current siteaccess to prepend dynamic ini overrides * @return void * @access private * @uses ymcDynamicIniSetting * @author ymc-dabe */ private function prependDynamicINI($siteaccess) { $ini = eZINI::instance(); eZDebug::writeNotice("Dynamic INI-settings are enabled for siteaccess '{$siteaccess}'", __METHOD__); $dynamicIniSettings = ymcDynamicIniSetting::fetchListByDefinedLogic($siteaccess); $iniFilesToWrite = array(); $finalCacheDirs = array(); foreach ($dynamicIniSettings as $dynamicIniSetting) { $iniFile = $dynamicIniSetting->attribute('ini_file'); $array_key = $dynamicIniSetting->attribute('contentobject_id') . '-' . $iniFile; $finalCacheDir = $this->attribute('global_cache_directory') . '/openvolano/dynamic_ini/' . $dynamicIniSetting->attribute('contentobject_id') . '/' . $siteaccess; $finalCacheDirs[] = $finalCacheDir; if (file_exists($finalCacheDir . '/' . $iniFile)) { eZDebug::writeNotice("Cache hit: {$finalCacheDir}/{$iniFile}", __METHOD__); continue; } if (!isset($iniFilesToWrite[$array_key])) { $iniFilesToWrite[$array_key] = array('iniInstance' => eZINI::instance($iniFile, $finalCacheDir, null, false, null, true, true), 'ini_dir' => $finalCacheDir, 'ini_file' => $iniFile); } $iniInstance = $iniFilesToWrite[$array_key]['iniInstance']; if ((int) $dynamicIniSetting->attribute('ini_type') !== ymcDynamicIniSetting::TYPE_ARRAY) { $iniInstance->setVariable($dynamicIniSetting->attribute('ini_section'), $dynamicIniSetting->attribute('ini_parameter'), $dynamicIniSetting->attribute('ini_value_dynamic')); } else { if ($iniInstance->hasVariable($dynamicIniSetting->attribute('ini_section'), $dynamicIniSetting->attribute('ini_parameter'))) { $existingValues = $iniInstance->variable($dynamicIniSetting->attribute('ini_section'), $dynamicIniSetting->attribute('ini_parameter')); } else { $existingValues = array(); } $newKey = $dynamicIniSetting->attribute('ini_key'); $newValue = $dynamicIniSetting->attribute('ini_value_dynamic'); if ($newKey == '' and $newValue == '') { array_unshift($existingValues, null); } else { if (is_numeric($newKey)) { $existingValues[] = $newValue; } else { $existingValues[$newKey] = $newValue; } } $iniInstance->setVariable($dynamicIniSetting->attribute('ini_section'), $dynamicIniSetting->attribute('ini_parameter'), $existingValues); } } if (count($iniFilesToWrite) > 0) { eZDebug::writeDebug("Generating dynamic-ini-files for '{$siteaccess}'", __METHOD__); } foreach ($iniFilesToWrite as $ini_infos) { $iniInstance = $ini_infos['iniInstance']; $finalCacheDir = $ini_infos['ini_dir']; $iniFile = $ini_infos['ini_file']; if (!is_writable($finalCacheDir)) { if (!eZDir::mkdir($finalCacheDir, 0777, true)) { eZDebug::writeError("Couldn't create cache directory '{$finalCacheDir}', perhaps wrong permissions", __METHOD__); continue; } } $iniInstance->save(); eZDebug::writeDebug("Created INI '{$iniFile}' at:\n{$finalCacheDir}/{$iniFile}", __METHOD__); } $finalCacheDirs = array_unique($finalCacheDirs); foreach ($finalCacheDirs as $finalCacheDir) { eZDebug::writeDebug("Added dynamic INI-settings for siteaccess '{$siteaccess}' using cache-dir:\n{$finalCacheDir}", __METHOD__); $ini->prependOverrideDir($finalCacheDir, true); } }
/** * Returns the content data for the given contentObjectAttribute * * @param object $contentObjectAttribute An eZContentObjectAttribute object * @return array * @see eZDataType * @access public * @author ymc-pabu */ function objectAttributeContent($contentObjectAttribute) { $contentClassAttribute = $contentObjectAttribute->attribute('contentclass_attribute'); $versioned_values = json_decode($contentObjectAttribute->attribute('data_text'), true); if (!is_array($versioned_values)) { $versioned_values = array(); } $data = array('live_data' => ymcDynamicIniSetting::fetchListByObjectAttributeID($contentObjectAttribute->attribute('id')), 'versioned_values' => $versioned_values, 'info' => array('type' => $contentClassAttribute->attribute(self::CLASS_TYPE_FIELD), 'filename' => $contentClassAttribute->attribute(self::CLASS_FILE_FIELD), 'section' => $contentClassAttribute->attribute(self::CLASS_SECTION_FIELD), 'parameter' => $contentClassAttribute->attribute(self::CLASS_PARAMETER_FIELD))); //ymc_pr($data); return $data; }