preInstallCheck( $p_fromdir, 'module' )) { return false; } $xmlDoc = $this->xmlDoc(); $mosinstall =& $xmlDoc->documentElement; $client = ''; if ($mosinstall->getAttribute( 'client' )) { $validClients = array( 'administrator' ); if (!in_array( $mosinstall->getAttribute( 'client' ), $validClients )) { $this->setError( 1, 'Unknown client type ['.$mosinstall->getAttribute( 'client' ).']' ); return false; } $client = 'admin'; } // Set some vars $e = &$mosinstall->getElementsByPath( 'name', 1 ); $this->elementName($e->getText()); $this->elementDir( mosPathName( $mosConfig_absolute_path . ($client == 'admin' ? '/administrator' : '') . '/modules/' ) ); $e = &$mosinstall->getElementsByPath( 'position', 1 ); if (!is_null($e)) { $position = $e->getText(); if ($e->getAttribute( 'published' ) == '1') { $published = 1; } else { $published = 0; } } else { $position = 'left'; $published = 0; } if ($this->parseFiles( 'files', 'module', 'No file is marked as module file' ) === false) { return false; } $this->parseFiles( 'images' ); $client_id = intval( $client == 'admin' ); // Insert in module in DB $query = "SELECT id FROM #__modules" . "\n WHERE module = " . $database->Quote( $this->elementSpecial() ) . "\n AND client_id = " . (int) $client_id ; $database->setQuery( $query ); if (!$database->query()) { $this->setError( 1, 'SQL error: ' . $database->stderr( true ) ); return false; } $id = $database->loadResult(); if (!$id) { $row = new mosModule( $database ); $row->title = $this->elementName(); $row->ordering = 99; $row->published = $published; $row->position = $position; $row->showtitle = 1; $row->iscore = 0; $row->access = $client == 'admin' ? 99 : 0; $row->client_id = $client_id; $row->module = $this->elementSpecial(); $row->store(); $query = "INSERT INTO #__modules_menu" . "\n VALUES ( " . (int) $row->id . ", 0 )" ; $database->setQuery( $query ); if(!$database->query()) { $this->setError( 1, 'SQL error: ' . $database->stderr( true ) ); return false; } } else { $this->setError( 1, 'Module "' . $this->elementName() . '" already exists!' ); return false; } if ($e = &$mosinstall->getElementsByPath( 'description', 1 )) { $this->setError( 0, $this->elementName() . '
' . $e->getText() . '
' ); } return $this->copySetupFile('front'); } /** * Custom install method * @param int The id of the module * @param string The URL option * @param int The client id */ function uninstall( $id, $option, $client=0 ) { global $database, $mosConfig_absolute_path; josSpoofCheck(); $id = intval( $id ); $query = "SELECT module, iscore, client_id" . "\n FROM #__modules WHERE id = " . (int) $id ; $database->setQuery( $query ); $row = null; $database->loadObject( $row ); if ($row->iscore) { HTML_installer::showInstallMessage( $row->title .'is a core module, and can not be uninstalled.