issues[$type]) ? $this->issues[$type] : array(); } /* Function: checkWritable Check if directory is writable Returns: Boolean */ public function checkWritable($directory) { $writable = is_writable($directory); if (!$writable) { $this->issues['critical'][] = sprintf("Directory not writable: %s.", $this->_relativePath($directory)); } return $writable; } /* Function: checkCommon Do all common checks Returns: Void */ public function checkCommon() { // check php version $current = phpversion(); $required = '5.2.7'; if (version_compare($required, $current, '>=')) { $this->issues['critical'][] = "PHP version {$current} is too old. Make sure to install {$required} or newer."; } // check json support if (!function_exists('json_decode')) { $this->issues['critical'][] = 'No JSON support available.'; } // check dom xml support if (!class_exists('DOMDocument')) { $this->issues['critical'][] = 'No DOM XML support available.'; } // check multibyte string support if (!extension_loaded('mbstring')) { $this->issues['notice'][] = 'No Multibyte string (mbstring) support available.'; } } /* Function: checkjQuery Check for multiple jQuery versions Returns: Void */ public function checkjQuery($directory) { $matches = array(); foreach ((array) $directory as $dir) { foreach ($this->_readDirectory($dir, $this->_relativePath($dir), '/jquery([a-zA-Z0-9_.-])*\.js$/') as $file) { // whitelist ? if (preg_match('/zoo|widgetkit/', $file)) { continue; } $matches[] = $file; } } if (count($matches)) { $this->issues['notice'][] = "Multiple jQuery Libraries found. Please make sure these don't conflict each other.
".implode("
", $matches); } } /* Function: _relativePath Create relative path to system directory Parameters: $path - Path Returns: String */ protected function _relativePath($path) { return preg_replace('/'.preg_quote(str_replace(DIRECTORY_SEPARATOR, '/', $this['system']->path), '/').'/i', '', str_replace(DIRECTORY_SEPARATOR, '/', $path), 1).'/'; } /* Function: _readDirectory Read files form a directory Parameters: $path - Path to files $prefix - Prefix $filter - Filter $recursive - Recursive Returns: Array */ protected function _readDirectory($path, $prefix = '', $filter = false, $recursive = true) { $files = array(); $ignore = array('.', '..', '.DS_Store', '.svn', '.git', '.gitignore', '.gitmodules', 'cgi-bin'); foreach (scandir($path) as $file) { // ignore file ? if (in_array($file, $ignore)) { continue; } // get files if (is_dir($path.'/'.$file) && $recursive) { $files = array_merge($files, $this->_readDirectory($path.'/'.$file, $prefix.$file.'/', $filter, $recursive)); } else { // filter file ? if ($filter && !preg_match($filter, $file)) { continue; } $files[] = $prefix.$file; } } return $files; } }