list = $list;
$this->header = $headers;
$this->depselect = $this->config->current['BASE'];
if(!session::is_set('printerPPDSelectionDialog')){
session::set("printerPPDSelectionDialog",array('regex'=> "*"));
}
/* Order the manufacturers index */
ksort($this->header);
}
function execute()
{
/* Call parent execute */
plugin::execute();
/* Fill templating stuff */
$smarty= get_smarty();
$display= "";
$s_action = "none";
$printerPPDSelectionDialog = session::get('printerPPDSelectionDialog');
$regex = $printerPPDSelectionDialog['regex'];
if(isset($_GET['search'])){
$regex = $_GET['search']."*";
}
if(isset($_POST['regex'])){
$regex= $_POST['regex'];
}
$regex = str_replace("**","*",$regex);
$printerPPDSelectionDialog['regex'] = $regex;
session::set('printerPPDSelectionDialog',$printerPPDSelectionDialog);
/* Delete requested, check if everything is ok and display confirmation dialog */
if(isset($_GET['act']) && $_GET['act'] == "del"){
/* Get id and check if id is valid */
$id_to_del = base64_decode($_GET['id']);
$found = "";
foreach($this->list[$this->Vendor] as $key => $data){
if($data['link'] == $id_to_del){
$found = $key;
break;
}
}
if(!empty($found)){
$this->current_del_id = $id_to_del;
$smarty->assign("warning", sprintf(msgPool::deleteInfo($found)));
return($smarty->fetch(get_template_path('remove_ppd.tpl', TRUE)));
}else{
msg_dialog::display(_("PPD error"), msgPool::fileDoesNotExist($id_to_del), ERROR_DIALOG);
}
}
/* Deletion confirmed */
if(isset($_POST['delete_ppd_confirm']) && !empty($this->current_del_id)){
/* check if file is removeable */
$is_ok = false;
if(is_writeable($this->current_del_id)){
$is_ok = @unlink($this->current_del_id);
/* Update ppd list */
if($is_ok){
foreach($this->list as $vendor => $ppds){
foreach($ppds as $ppd => $data){
if($data['link'] == $this->current_del_id){
unset($this->list[$vendor][$ppd]);
}
}
}
}
}
if(!$is_ok){
msg_dialog::display(_("PPD error"), msgPool::cannotDeleteFile($this->current_del_id), ERROR_DIALOG);
}
}
/** Added **/
$list = array();
foreach($this->list as $cat => $ppds){
foreach($ppds as $ppd){
$name = $ppd['ppd']['name'];
if(preg_match("/^".str_replace("*",".*",$regex)."/i",$name)){
if(is_readable($ppd['link'])){
$list[$ppd['link']] = $ppd;
}
}
}
}
/* Sort the list alphabetically */
asort($list);
if((isset($_GET['act']))&&($_GET['act']=="open")) {
if((!empty($_GET['id'])) && (!isset( $this->header[base64_decode($_GET['id'])]))){
msg_dialog::display(_("PPD error"), sprintf(_("Cannot locate vendor '%s' in available PPDs!"), base64_decode($_GET['id'])), ERROR_DIALOG);
$this->Vendor = "";
}else{
$this->Vendor = base64_decode($_GET['id']);
}
}
$div = new divSelectBox("printerPPDSelectionDialog");
$div ->SetHeight(450);
$div ->SetSummary(_("Printer ppd selection."));
$linkopen = "
%s
";
$uselink = "%s";
$dellink = "
";
if(empty($this->Vendor)){
foreach($this-> header as $key => $entry){
$div ->AddEntry (array(
array("string"=>sprintf($linkopen,base64_encode($key),$key),"attach"=>"style='border-right:0px;'")
));
}
}else{
$div ->AddEntry (array(
array("string"=>sprintf($linkopen,"",".. ["._("back")."]"),"attach"=>"style='border-right:0px;'")
));
foreach($list as $key => $ppd){
$name = $ppd['ppd']['name'];
if(preg_match("/^".$this->Vendor."/", $name)){
if(is_writeable($ppd['link'])){
$del_str = sprintf($dellink,base64_encode($key));
}else{
$del_str = "";
}
$div ->AddEntry (array(
array("string"=>sprintf($uselink,base64_encode($key),$name)),
array("string"=>$del_str,"attach"=>"style='border-right:0px;'")
));
}
}
}
$smarty->assign("List", $div -> DrawList());
$smarty->assign("search_image", get_template_path('images/lists/search.png'));
$smarty->assign("launchimage", get_template_path('images/lists/action.png'));
$smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png'));
$smarty->assign("alphabet", generate_alphabet());
$smarty->assign("apply", apply_filter());
$smarty->assign("regex", $regex);
$display.= $smarty->fetch(get_template_path('printerPPDSelectionDialog.tpl', TRUE,dirname(__FILE__)));
return($display);
}
function save_object()
{
}
function check(){
}
/* Save to LDAP */
function save()
{
return $this->selectedPPD;
}
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>