/** * Scan * * Extract an module with all his dependency * * @access public * @author blair Jersyer * @copyright 2015 * @param string $module_namespace * @since 3.0.1 * @return void */ static function extract($module_namespace) { $module = self::get($module_namespace); if ($module) { get_instance()->load->library('zip'); get_instance()->load->helper('security'); $module_temp_folder_name = do_hash($module_namespace); $module_installed_dir = MODULESPATH . $module_namespace . '/'; // creating temp folder $temp_folder = APPPATH . 'temp' . '/' . $module_temp_folder_name; if (!is_dir($temp_folder)) { mkdir($temp_folder); } // check manifest if (is_file($manifest = $module_installed_dir . 'manifest.json')) { $manifest_content = file_get_contents($manifest); $manifest_array = json_decode($manifest_content); //var_dump( $manifest_content ); // manifest is valid if (is_array($manifest_array)) { //var_dump( $manifest_array ); // moving manifest file to temp folder foreach (array('models', 'libraries', 'language', 'config') as $reserved_folder) { foreach ($manifest_array as $file) { //var_dump( $path_id_separator = APPPATH . $reserved_folder ); if (strstr($file, $path_id_separator = APPPATH . $reserved_folder)) { // we found a a file $path_splited = explode($path_id_separator, $file); //var_dump( $path_splited ); SimpleFileManager::file_copy(APPPATH . $reserved_folder . $path_splited[1], $temp_folder . '/' . $reserved_folder . $path_splited[1]); } } } } $assets_path = PUBLICPATH . 'modules' . '/' . $module_namespace; // Copy Assets to if (is_dir($assets_path)) { // create assets folder if (!is_dir($temp_folder . '/' . 'assets')) { mkdir($temp_folder . '/' . 'assets'); } SimpleFileManager::copy($assets_path, $temp_folder . '/' . 'assets'); } } // move module file to temp folder SimpleFileManager::copy($module_installed_dir, $temp_folder); $FCPATH = str_replace('/', '\\', FCPATH); // read temp folder and download it get_instance()->zip->read_dir($FCPATH . 'application\\temp\\' . $module_temp_folder_name . '\\', FALSE, $FCPATH . 'application\\temp\\' . $module_temp_folder_name . '\\'); // delete temp folder SimpleFileManager::drop($temp_folder); get_instance()->zip->download($module_namespace); } }