admin->newHTMLClassCheck ('listDbconvertHTML', $this, 0, '');
if ($view AND $this->admin->checkCallable($view, 'view')) $view->view();
return;
}
$view = new remositoryAdminHTML ($this, 0, '');
$view->formStart(_DOWN_ADMIN_ACT_DBCONVERT);
$interface = remositoryInterface::getInstance();
$database = $interface->getDB();
foreach (array('containers','files','reviews','structure','log','temp') as $tablename) {
$sql = "TRUNCATE TABLE #__downloads_$tablename";
remositoryRepository::doSQL($sql);
}
$sql = "ALTER TABLE #__downloads_containers AUTO_INCREMENT=2";
remositoryRepository::doSQL($sql);
$containermap = array('catid'=>array(),'folderid'=>array());
$sql = "SELECT * FROM #__downloads_category";
$database->setQuery($sql);
$rows = $database->loadObjectList();
if (!$rows) $rows = array();
foreach ($rows as $row) {
if ($row->registered) $row->registered = '0';
else $row->registered = '2';
foreach ($row as $field=>$value) {
if (!is_numeric($row->$field)) $row->$field = $database->getEscaped($row->$field);
}
$sql = "INSERT INTO #__downloads_containers (parentid,name,published,description,filecount,icon,registered) VALUES (0,'$row->name',$row->published,'$row->description',$row->files,'$row->icon',$row->registered)";
$database->setQuery($sql);
if (!$database->query()) {
echo "\n";
exit();
}
$newid = $database->insertid();
$containermap['catid'][$row->id] = $newid;
$sql = "SELECT * FROM #__downloads_folders WHERE catid=$row->id";
$database->setQuery($sql);
$folders = $database->loadObjectList();
if ($folders) {
foreach ($folders as $folder) $this->convertfolder ($folder, $newid, $containermap);
}
}
$sql = "SELECT * FROM #__downloads";
$database->setQuery($sql);
$files = $database->loadObjectList();
if (!$files) $files = array();
foreach ($files as $file) {
$testurl = strtolower(trim($file->url));
$findsite = strpos($testurl, strtolower(trim($interface->getCfg('live_site'))));
if ($findsite===false){
$islocal = '0';
$realname = '';
$filedate = date('Y-m-d H:i:s');
$url = $file->url;
if (eregi(_REMOSITORY_REGEXP_URL,$url) OR eregi(_REMOSITORY_REGEXP_IP,$url)) $filefound = true;
else $filefound = false;
}
else {
$islocal = '1';
$url_array=explode('/',$file->url);
$url = '';
$realname = $url_array[(count($url_array)-1)];
$filepath = $this->repository->Down_Path.'/'.$realname;
if (file_exists($filepath)) {
$filefound = true;
$filedate = date('Y-m-d H:i:s', filemtime($this->repository->Down_Path.'/'.$realname));
}
else $filefound = false;
}
$containerid = 0;
if ($file->catid != 0) {
if (isset($containermap['catid'][$file->catid])) $containerid = $containermap['catid'][$file->catid];
else echo '
| '.$file->id.'/'.$realname.'/'.$file->catid.' |
';
}
if ($file->folderid != 0) {
if (isset($containermap['folderid'][$file->folderid])) $containerid = $containermap['folderid'][$file->folderid];
else echo '| '.$file->id.'/'.$realname.'/'.$file->folderid.' |
';
}
if ($filefound AND $containerid != 0) {
foreach (get_class_vars(get_class($file)) as $field=>$value) if (is_string($file->$field)) $file->$field = $database->getEscaped($file->$field);
$sql="INSERT INTO #__downloads_files (realname,islocal,containerid,published,url,description,smalldesc,autoshort,license,licenseagree,filetitle,filesize,filetype,downloads,icon,fileversion,fileauthor,filedate,filehomepage,screenurl,submittedby,submitdate) VALUES ('$realname',$islocal,$containerid,$file->published,'$url','$file->description','$file->smalldesc',$file->autoshort,'$file->license',$file->licenseagree,'$file->filename','$file->filesize','$file->filetype','$file->downloads','$file->icon','$file->fileversion','$file->fileauthor','$filedate','$file->filehomepage','$file->screenurl', $file->submittedby,'$file->submitdate')";
$database->setQuery($sql);
if (!$database->query()) {
echo "\n";
exit();
}
$newid = $database->insertid();
$sql = "SELECT * FROM #__downloads_comments WHERE id=$file->id";
$database->setQuery($sql);
$comments = $database->loadObjectList();
if ($comments) {
foreach ($comments as $comment) {
$sql = "INSERT INTO #__downloads_reviews (component,itemid,userid,title,comment,date) VALUES ('com_remository',$newid,'$comment->userid','Review Title','$comment->comment','$comment->time')";
$database->setQuery($sql);
remositoryRepository::doSQL($sql);
}
}
}
else echo '| '.$file->url.' |
';
}
$this->repository->resetCounts(array());
echo '| '._DOWN_DB_CONVERT_OK.' |
';
echo '';
}
function convertfolder ($folder, $parent, &$containermap) {
$interface = remositoryInterface::getInstance();
$database = $interface->getDB();
foreach ($folder as $field=>$value) {
if (!is_numeric($folder->$field)) $folder->$field = $database->getEscaped($folder->$field);
}
if ($folder->registered) $folder->registered = '0';
else $folder->registered = '2';
$sql = "INSERT INTO #__downloads_containers (parentid,name,published,description,filecount,icon,registered) VALUES ($parent, '$folder->name', $folder->published, '$folder->description', '$folder->files', '$folder->icon', $folder->registered)";
$database->setQuery($sql);
if (!$database->query()) {
echo "\n";
exit();
}
$newid = $database->insertid();
$containermap['folderid'][$folder->id] = $newid;
$sql = "SELECT * FROM #__downloads_folders WHERE parentid=$folder->id";
$database->setQuery($sql);
$children = $database->loadObjectList();
if ($children) {
foreach ($children as $child) $this->convertfolder ($child, $newid, $containermap);
}
}
}