mirror of
https://github.com/e107inc/e107.git
synced 2025-08-04 05:37:32 +02:00
Plugin downlods in working state (work in progress, cleanup needed)
This commit is contained in:
@@ -17,101 +17,6 @@ if (!getperms("Z"))
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only tested Locally so far.
|
|
||||||
if(e_AJAX_REQUEST && isset($_GET['src'])) // Ajax
|
|
||||||
{
|
|
||||||
$string = base64_decode($_GET['src']);
|
|
||||||
parse_str($string,$p);
|
|
||||||
$remotefile = $p['plugin_url'];
|
|
||||||
|
|
||||||
$localfile = md5($remotefile.time()).".zip";
|
|
||||||
$status = "Downloading...";
|
|
||||||
|
|
||||||
$fl = e107::getFile();
|
|
||||||
$fl->setAuthKey($e107SiteUsername,$e107SiteUserpass);
|
|
||||||
$fl->download($remotefile,'plugin');
|
|
||||||
|
|
||||||
exit;
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(!file_exists(e_TEMP.$localfile))
|
|
||||||
{
|
|
||||||
echo 'There was a problem retrieving the file';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$contents = file_get_contents(e_TEMP.$localfile);
|
|
||||||
if($contents == 'LOGIN')
|
|
||||||
{
|
|
||||||
echo "<div class='e-alert'>Please login to your e107.org account and try again</div>";
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Disabed";
|
|
||||||
exit;
|
|
||||||
|
|
||||||
// chmod(e_PLUGIN,0777);
|
|
||||||
chmod(e_TEMP.$localfile,0755);
|
|
||||||
|
|
||||||
require_once(e_HANDLER."pclzip.lib.php");
|
|
||||||
$archive = new PclZip(e_TEMP.$localfile);
|
|
||||||
$unarc = ($fileList = $archive -> extract(PCLZIP_OPT_PATH, e_PLUGIN, PCLZIP_OPT_SET_CHMOD, 0755));
|
|
||||||
// chmod(e_PLUGIN,0755);
|
|
||||||
$dir = basename($unarc[0]['filename']);
|
|
||||||
// chmod(e_UPLOAD.$localfile,0666);
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
/* Cannot use this yet until 'folder' is included in feed.
|
|
||||||
if($dir != $p['plugin_folder'])
|
|
||||||
{
|
|
||||||
|
|
||||||
echo "<br />There is a problem with the data submitted by the author of the plugin.";
|
|
||||||
echo "dir=".$dir;
|
|
||||||
echo "<br />pfolder=".$p['plugin_folder'];
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
if($unarc[0]['folder'] ==1 && is_dir($unarc[0]['filename']))
|
|
||||||
{
|
|
||||||
$status = "Unzipping...";
|
|
||||||
$dir = basename($unarc[0]['filename']);
|
|
||||||
$plugPath = preg_replace("/[^a-z0-9-\._]/", "-", strtolower($dir));
|
|
||||||
|
|
||||||
e107::getSingleton('e107plugin')->update_plugins_table('update');
|
|
||||||
e107::getDb()->gen("SELECT plugin_id FROM #plugin WHERE plugin_path = '".$plugPath."' LIMIT 1");
|
|
||||||
$row = e107::getDb()->db_Fetch(MYSQL_ASSOC);
|
|
||||||
$status = e107::getSingleton('e107plugin')->install_plugin($row['plugin_id']);
|
|
||||||
//unlink(e_UPLOAD.$localfile);
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// print_a($fileList);
|
|
||||||
$status = "Error: <br /><a href='".$remotefile."'>Download Manually</a>";
|
|
||||||
//echo $archive->errorInfo(true);
|
|
||||||
// $status = "There was a problem";
|
|
||||||
//unlink(e_UPLOAD.$localfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo $status;
|
|
||||||
// @unlink(e_TEMP.$localfile);
|
|
||||||
|
|
||||||
// echo "file=".$file;
|
|
||||||
exit;
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
e107::coreLan('plugin', true);
|
e107::coreLan('plugin', true);
|
||||||
|
|
||||||
$e_sub_cat = 'plug_manage';
|
$e_sub_cat = 'plug_manage';
|
||||||
@@ -123,7 +28,38 @@ global $user_pref;
|
|||||||
|
|
||||||
require_once(e_HANDLER.'plugin_class.php');
|
require_once(e_HANDLER.'plugin_class.php');
|
||||||
require_once(e_HANDLER.'file_class.php');
|
require_once(e_HANDLER.'file_class.php');
|
||||||
|
$plugin = new e107plugin;
|
||||||
|
$pman = new pluginManager;
|
||||||
|
define("e_PAGETITLE",ADLAN_98." - ".$pman->pagetitle);
|
||||||
|
|
||||||
|
if(e_AJAX_REQUEST && isset($_GET['action'])) // Ajax
|
||||||
|
{
|
||||||
|
if($_GET['action'] == 'download')
|
||||||
|
{
|
||||||
|
$string = base64_decode($_GET['src']);
|
||||||
|
parse_str($string, $p);
|
||||||
|
|
||||||
|
$mp = $pman->getMarketplace();
|
||||||
|
$mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass);
|
||||||
|
// Server flush useless. It's ajax ready state 4, we can't flush (sadly) before that (at least not for all browsers)
|
||||||
|
echo "<pre>Connecting...\n"; flush(); // FIXME change the modal default label, default is Loading...
|
||||||
|
// download and flush
|
||||||
|
$mp->download($p['plugin_id'], $p['plugin_mode'], 'plugin');
|
||||||
|
|
||||||
|
echo "</pre>"; flush();
|
||||||
|
}
|
||||||
|
/*$string = base64_decode($_GET['src']);
|
||||||
|
parse_str($string,$p);
|
||||||
|
$remotefile = $p['plugin_url'];
|
||||||
|
|
||||||
|
$localfile = md5($remotefile.time()).".zip";
|
||||||
|
$status = "Downloading...";
|
||||||
|
|
||||||
|
$fl = e107::getFile();
|
||||||
|
$fl->setAuthKey($e107SiteUsername,$e107SiteUserpass);
|
||||||
|
$fl->download($remotefile,'plugin');*/
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
if(isset($_POST['uninstall_cancel']))
|
if(isset($_POST['uninstall_cancel']))
|
||||||
{
|
{
|
||||||
@@ -222,11 +158,6 @@ class pluginmanager_form extends e_form
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$plugin = new e107plugin;
|
|
||||||
$pman = new pluginManager;
|
|
||||||
define("e_PAGETITLE",ADLAN_98." - ".$pman->pagetitle);
|
|
||||||
require_once("auth.php");
|
require_once("auth.php");
|
||||||
$pman->pluginObserver();
|
$pman->pluginObserver();
|
||||||
$mes = e107::getMessage();
|
$mes = e107::getMessage();
|
||||||
@@ -310,18 +241,6 @@ class pluginManager{
|
|||||||
$keys = array_keys($this -> titlearray);
|
$keys = array_keys($this -> titlearray);
|
||||||
$this->pagetitle = (in_array($this->action,$keys)) ? $this -> titlearray[$this->action] : $this -> titlearray['installed'];
|
$this->pagetitle = (in_array($this->action,$keys)) ? $this -> titlearray[$this->action] : $this -> titlearray['installed'];
|
||||||
|
|
||||||
|
|
||||||
// temporary - create e_marketpalce instnace
|
|
||||||
// it'll be moved to e107::getMarketplace() soon
|
|
||||||
if($this->action == 'online')
|
|
||||||
{
|
|
||||||
// XXX force xmlrpc temporary
|
|
||||||
require_once(e_HANDLER.'e_marketplace.php');
|
|
||||||
$this->mp = new e_marketplace('xmlrpc');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* if(isset($_POST['uninstall-selected']))
|
/* if(isset($_POST['uninstall-selected']))
|
||||||
{
|
{
|
||||||
foreach($_POST['checkboxes'] as $val)
|
foreach($_POST['checkboxes'] as $val)
|
||||||
@@ -338,7 +257,19 @@ class pluginManager{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Temporary, e107::getMarketplace() coming soon
|
||||||
|
* @return e_marketplace
|
||||||
|
*/
|
||||||
|
public function getMarketplace()
|
||||||
|
{
|
||||||
|
if(null === $this->mp)
|
||||||
|
{
|
||||||
|
require_once(e_HANDLER.'e_marketplace.php');
|
||||||
|
$this->mp = new e_marketplace('xmlrpc'); // XXX temporary force xmplrpc
|
||||||
|
}
|
||||||
|
return $this->mp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -479,11 +410,12 @@ class pluginManager{
|
|||||||
$from = isset($_GET['frm']) ? intval($_GET['frm']) : 0;
|
$from = isset($_GET['frm']) ? intval($_GET['frm']) : 0;
|
||||||
$srch = preg_replace('/[^\w]/','', vartrue($_GET['srch']));
|
$srch = preg_replace('/[^\w]/','', vartrue($_GET['srch']));
|
||||||
|
|
||||||
|
$mp = $this->getMarketplace();
|
||||||
// auth
|
// auth
|
||||||
$this->mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass);
|
$mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass);
|
||||||
|
|
||||||
// do the request, retrieve and parse data
|
// do the request, retrieve and parse data
|
||||||
$xdata = $this->mp->call('getList', array(
|
$xdata = $mp->call('getList', array(
|
||||||
'type' => 'plugin',
|
'type' => 'plugin',
|
||||||
'params' => array('limit' => 10, 'search' => $srch, 'from' => $from)
|
'params' => array('limit' => 10, 'search' => $srch, 'from' => $from)
|
||||||
));
|
));
|
||||||
@@ -511,9 +443,11 @@ class pluginManager{
|
|||||||
$price = ($row['price'] > 0) ? "<span class='label label-success'>".$row['price']." credits</span>" : "<span class='label label-success'>Free</span>";
|
$price = ($row['price'] > 0) ? "<span class='label label-success'>".$row['price']." credits</span>" : "<span class='label label-success'>Free</span>";
|
||||||
|
|
||||||
$data[] = array(
|
$data[] = array(
|
||||||
'plugin_id' => $c,
|
'plugin_id' => $row['params']['id'],
|
||||||
|
'plugin_mode' => $row['params']['mode'],
|
||||||
'plugin_icon' => vartrue($row['icon'],e_IMAGE."admin_images/plugins_32.png"),
|
'plugin_icon' => vartrue($row['icon'],e_IMAGE."admin_images/plugins_32.png"),
|
||||||
'plugin_name' => stripslashes($row['name']).$featured,
|
'plugin_name' => stripslashes($row['name']),
|
||||||
|
'plugin_featured' => $featured,
|
||||||
'plugin_folder' => $row['folder'],
|
'plugin_folder' => $row['folder'],
|
||||||
'plugin_date' => vartrue($row['date']),
|
'plugin_date' => vartrue($row['date']),
|
||||||
'plugin_category' => vartrue($row['category'], 'n/a'),
|
'plugin_category' => vartrue($row['category'], 'n/a'),
|
||||||
@@ -523,7 +457,7 @@ class pluginManager{
|
|||||||
'plugin_compatible' => $badge,
|
'plugin_compatible' => $badge,
|
||||||
|
|
||||||
'plugin_website' => vartrue($row['authorUrl']),
|
'plugin_website' => vartrue($row['authorUrl']),
|
||||||
'plugin_url' => $row['url'],
|
//'plugin_url' => $row['url'],
|
||||||
'plugin_notes' => '',
|
'plugin_notes' => '',
|
||||||
'plugin_price' => $price
|
'plugin_price' => $price
|
||||||
);
|
);
|
||||||
@@ -568,8 +502,11 @@ class pluginManager{
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$_value = $val[$v];
|
||||||
|
if($v == 'plugin_name') $_value .= $val['plugin_featured'];
|
||||||
// echo '<br />v='.$v;
|
// echo '<br />v='.$v;
|
||||||
$text .= "<td style='height: 40px' class='".vartrue($this->fields[$v]['class'],'left')."'>".$frm->renderValue($v, $val[$v], $this->fields[$v], $key)."</td>\n";
|
$text .= "<td style='height: 40px' class='".vartrue($this->fields[$v]['class'],'left')."'>".$frm->renderValue($v, $_value, $this->fields[$v], $key)."</td>\n";
|
||||||
}
|
}
|
||||||
$text .= "<td class='center'>".$this->options($val)."</td>";
|
$text .= "<td class='center'>".$this->options($val)."</td>";
|
||||||
$text .= "</tr>";
|
$text .= "</tr>";
|
||||||
@@ -613,10 +550,13 @@ class pluginManager{
|
|||||||
|
|
||||||
|
|
||||||
$d = http_build_query($data,false,'&');
|
$d = http_build_query($data,false,'&');
|
||||||
$url = e_SELF."?src=".base64_encode($d);
|
//$url = e_SELF."?src=".base64_encode($d);
|
||||||
|
$url = e_SELF.'?action=download&src='.base64_encode($d);//$url.'&action=download';
|
||||||
$id = 'plug_'.$data['plugin_id'];
|
$id = 'plug_'.$data['plugin_id'];
|
||||||
|
//<button type='button' data-target='{$id}' data-loading='".e_IMAGE."/generic/loading_32.gif' class='btn btn-primary e-ajax middle' value='Download and Install' data-src='".$url."' ><span>Download and Install</span></button>
|
||||||
|
$dicon = "<a data-toggle='modal' data-modal-caption=\"Downloading ".$data['plugin_name']." ".$data['plugin_version']."\" href='{$url}' data-cache='false' data-target='#uiModal' title='".$LAN_DOWNLOAD."' ><img class='top' src='".e_IMAGE_ABS."icons/download_32.png' alt='' /></a> ";
|
||||||
return "<div id='{$id}' style='vertical-align:middle'>
|
return "<div id='{$id}' style='vertical-align:middle'>
|
||||||
<button type='button' data-target='{$id}' data-loading='".e_IMAGE."/generic/loading_32.gif' class='btn btn-primary e-ajax middle' value='Download and Install' data-src='".$url."' ><span>Download and Install</span></button>
|
{$dicon}
|
||||||
</div>";
|
</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@ if(e_AJAX_REQUEST)
|
|||||||
$mp = $themec->getMarketplace();
|
$mp = $themec->getMarketplace();
|
||||||
$mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass);
|
$mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass);
|
||||||
// Server flush useless. It's ajax ready state 4, we can't flush (sadly) before that (at least not for all browsers)
|
// Server flush useless. It's ajax ready state 4, we can't flush (sadly) before that (at least not for all browsers)
|
||||||
echo "<pre>Connecting...<br />"; flush(); // FIXME change the modal default label, default is Loading...
|
echo "<pre>Connecting...\n"; flush(); // FIXME change the modal default label, default is Loading...
|
||||||
// download and flush
|
// download and flush
|
||||||
$mp->download($p['id'], $p['mode'], $p['type']);
|
$mp->download($p['id'], $p['mode'], $p['type']);
|
||||||
echo "</pre>"; flush();
|
echo "</pre>"; flush();
|
||||||
|
@@ -223,7 +223,7 @@ abstract class e_marketplace_adapter_abstract
|
|||||||
|
|
||||||
if($dir && is_dir($destpath.$dir))
|
if($dir && is_dir($destpath.$dir))
|
||||||
{
|
{
|
||||||
echo "(".ucfirst($type).") Already Installed".$destpath.$dir; flush();
|
echo "(".ucfirst($type).") Already Downloaded - ".basename($destpath).'/'.$dir; flush();
|
||||||
@unlink(e_TEMP.$localfile);
|
@unlink(e_TEMP.$localfile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -555,7 +555,7 @@ class themeHandler
|
|||||||
'date' => $r['date'],
|
'date' => $r['date'],
|
||||||
'version' => $r['version'],
|
'version' => $r['version'],
|
||||||
'thumbnail' => $r['thumbnail'],
|
'thumbnail' => $r['thumbnail'],
|
||||||
'url' => $r['url'],
|
//'url' => $r['url'],
|
||||||
'author' => $r['author'],
|
'author' => $r['author'],
|
||||||
'website' => $r['authorUrl'],
|
'website' => $r['authorUrl'],
|
||||||
'compatibility' => $r['compatibility'],
|
'compatibility' => $r['compatibility'],
|
||||||
@@ -1034,7 +1034,7 @@ class themeHandler
|
|||||||
$id = $frm->name2id($theme['name']);
|
$id = $frm->name2id($theme['name']);
|
||||||
$LAN_DOWNLOAD = ($theme['price'] > 0) ? "Buy/Download" : "Download";
|
$LAN_DOWNLOAD = ($theme['price'] > 0) ? "Buy/Download" : "Download";
|
||||||
|
|
||||||
$downloadUrl = e_SELF.'?'.(e_QUERY ? e_QUERY.'&' : '').'&action=download&src='.base64_encode($d);//$url.'&action=download';
|
$downloadUrl = e_SELF.'?action=download&src='.base64_encode($d);//$url.'&action=download';
|
||||||
$infoUrl = $url.'&action=info';
|
$infoUrl = $url.'&action=info';
|
||||||
|
|
||||||
//$main_icon = "<a data-src='".$downloadUrl."' href='{$downloadUrl}' data-target='{$id}' data-loading='".e_IMAGE."/generic/loading_32.gif' class='-e-ajax' title='".$LAN_DOWNLOAD."' ><img class='top' src='".e_IMAGE_ABS."icons/download_32.png' alt='' /></a> ";
|
//$main_icon = "<a data-src='".$downloadUrl."' href='{$downloadUrl}' data-target='{$id}' data-loading='".e_IMAGE."/generic/loading_32.gif' class='-e-ajax' title='".$LAN_DOWNLOAD."' ><img class='top' src='".e_IMAGE_ABS."icons/download_32.png' alt='' /></a> ";
|
||||||
|
Reference in New Issue
Block a user