コード例 #1
0
ファイル: Addons.php プロジェクト: ircoco/BlackCatCMS
 /**
  * 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;
     }
 }