/** * This function is used to check info.php * Also used for language files * * @access public * @param string Any valid directory(-path) **/ public static function checkInfo($directory) { $self = self::getInstance(); $self->log()->LogDebug(sprintf('checking info.php for $directory [%s]', $directory)); if (is_dir($directory) && file_exists($directory . '/info.php')) { $self->log()->LogDebug('$directory is a directory and info.php found'); // get header info $link = NULL; ini_set('auto_detect_line_endings', true); $file = fopen($directory . '/info.php', 'r'); if ($file) { while ($line = fgets($file)) { if (preg_match('/\\@link\\s+(.*)/i', $line, $matches)) { $link = trim($matches[1]); break; } } fclose($file); } require $directory . '/info.php'; if (isset($module_function) && in_array(strtolower($module_function), self::$module_functions)) { $return_values = array('addon_function' => 'module'); } else { if (isset($template_function) && in_array(strtolower($template_function), self::$template_functions)) { $return_values = array('addon_function' => 'template'); } else { self::$error = 'Invalid info.php - neither $module_function nor $template_function set'; $self->log()->logDebug(self::$error); return false; } } // Check if the file is valid foreach (self::$info_vars_mandatory[$return_values['addon_function']] as $varname) { if (!isset(${$varname})) { self::$error = 'Invalid info.php - mandatory var ' . $varname . ' not set'; $self->log()->logDebug(self::$error); return false; } else { // rename keys $key = str_ireplace(array('template_'), array('module_'), $varname); $return_values[$key] = ${$varname}; } } // add empty keys foreach (self::$info_vars_full[$return_values['addon_function']] as $varname) { $key = str_ireplace(array('template_'), array('module_'), $varname); if (!isset($returnvalues[$key])) { $return_values[$key] = isset(${$varname}) ? ${$varname} : ''; } } // check platform (WB/LEPTON/BC) if (isset($lepton_platform) && !isset($module_platform)) { $return_values['cms_name'] = 'LEPTON'; } if (isset($module_platform)) { if (!self::versionCompare($module_platform, '2.x', '<=')) { $return_values['cms_name'] = 'WebsiteBaker'; } else { $return_values['cms_name'] = 'BlackCat CMS'; } } if (!isset($return_values['cms_name'])) { $return_values['cms_name'] = 'unknown'; } // link to module homepage if ($link) { $return_values['module_link'] = $link; } return $return_values; } elseif (file_exists($directory) && pathinfo($directory, PATHINFO_EXTENSION) == 'php') { $self->log()->LogDebug('$directory is a file and has "php" suffix'); // Check if the file is valid $content = file_get_contents($directory); if (strpos($content, '<?php') === false) { self::$error = 'Invalid language file - missing PHP delimiter'; $self->log()->logDebug(self::$error); return false; } $return_values = array('addon_function' => 'language', 'module_directory' => pathinfo($directory, PATHINFO_FILENAME)); require $directory; foreach (self::$info_vars_mandatory['language'] as $varname) { if (!isset(${$varname})) { self::$error = 'Invalid language file - var ' . $varname . ' not set'; $self->log()->logDebug(self::$error); return false; } else { // rename keys $key = str_ireplace(array('language_'), array('module_'), $varname); $return_values[$key] = ${$varname}; } } $return_values['module_description'] = $language_name; return $return_values; } else { self::$error = 'invalid directory/language file or info.php is missing, check of language file failed'; $self->log()->logDebug(self::$error); return false; } }