Beispiel #1
0
 public function help()
 {
     $extension = $this->request->get['extension'];
     $ext = new ExtensionUtils($extension);
     $help_file_path = DIR_EXT . $extension . '/' . str_replace('..', '', $ext->getConfig('help_file'));
     $content = array();
     $content['title'] = $this->language->get('text_help');
     if (file_exists($help_file_path) && is_file($help_file_path)) {
         $content['content'] = file_get_contents($help_file_path);
     } else {
         $content['content'] = $this->language->get('error_no_help_file');
     }
     $content['content'] = $this->html->convertLinks($content['content']);
     $this->load->library('json');
     $this->response->setOutput(AJson::encode($content));
 }
 public function help()
 {
     //init controller data
     $this->extensions->hk_InitData($this, __FUNCTION__);
     $extension = $this->request->get['extension'];
     $ext = new ExtensionUtils($extension);
     $help_file_path = DIR_EXT . $extension . '/' . str_replace('..', '', $ext->getConfig('help_file'));
     $this->data['content'] = array();
     $this->data['title'] = $this->language->get('text_help');
     if (file_exists($help_file_path) && is_file($help_file_path)) {
         $this->data['content'] = file_get_contents($help_file_path);
     } else {
         $this->data['content'] = $this->language->get('error_no_help_file');
     }
     $this->data['content'] = $this->html->convertLinks($this->data['content']);
     $this->view->batchAssign($this->data);
     $this->response->setOutput($this->view->fetch('responses/extension/howto.tpl'));
     //update controller data
     $this->extensions->hk_UpdateData($this, __FUNCTION__);
 }
Beispiel #3
0
 public function delete()
 {
     //init controller data
     $this->extensions->hk_InitData($this, __FUNCTION__);
     if (!$this->user->canModify('extension/extensions')) {
         $this->session->data['error'] = $this->language->get('error_permission');
         $this->redirect($this->html->getSecureURL('extension/extensions/' . $this->session->data['extension_filter']));
     } else {
         //extensions that has record in DB but missing files
         $missing_extensions = $this->extensions->getMissingExtensions();
         if (!in_array($this->request->get['extension'], $missing_extensions) && $this->config->has($this->request->get['extension'] . '_status')) {
             $this->session->data['error'] = $this->language->get('error_uninstall');
             $this->redirect($this->html->getSecureURL('extension/extensions/' . $this->session->data['extension_filter']));
         }
         $ext = new ExtensionUtils($this->request->get['extension']);
         if (in_array($this->request->get['extension'], $missing_extensions)) {
             $this->extension_manager->uninstall($this->request->get['extension'], $ext->getConfig());
         }
         $this->extension_manager->delete($this->request->get['extension']);
         $this->redirect($this->html->getSecureURL('extension/extensions/' . $this->session->data['extension_filter']));
     }
     //update controller data
     $this->extensions->hk_UpdateData($this, __FUNCTION__);
 }
 public function __construct()
 {
     $this->extensions_dir = array();
     $this->db_extensions = array();
     $this->missing_extensions = array();
     $extensions = glob(DIR_EXT . '*', GLOB_ONLYDIR);
     if ($extensions) {
         foreach ($extensions as $ext) {
             //skip other directory not containing extensions
             if (is_file($ext . '/config.xml')) {
                 $this->extensions_dir[] = str_replace(DIR_EXT, '', $ext);
             }
         }
     }
     $registry = Registry::getInstance();
     if ($registry->has('db')) {
         $this->db = $registry->get('db');
         //get extensions from db
         $query = $this->getExtensionsList();
         foreach ($query->rows as $result) {
             $this->db_extensions[] = $result['key'];
         }
         //check if we have extensions that has record in db, but missing files
         // if so, disable them
         $this->missing_extensions = array_diff($this->db_extensions, $this->extensions_dir);
         if (!empty($this->missing_extensions)) {
             foreach ($this->missing_extensions as $ext) {
                 $warning = new AWarning($ext . ' directory is missing');
                 $warning->toMessages();
             }
         }
         //check if we have extensions in dir that has no record in db
         $diff = array_diff($this->extensions_dir, $this->db_extensions);
         if (!empty($diff)) {
             foreach ($diff as $ext) {
                 $data['key'] = $ext;
                 $data['status'] = 0;
                 $misext = new ExtensionUtils($ext);
                 $data['type'] = $misext->getConfig('type');
                 $data['version'] = $misext->getConfig('version');
                 $data['priority'] = $misext->getConfig('priority');
                 $data['category'] = $misext->getConfig('category');
                 $data['license_key'] = $registry->get('session')->data['package_info']['extension_key'];
                 if ($registry->has('extension_manager')) {
                     $registry->get('extension_manager')->add($data);
                 }
             }
         }
     }
 }
 /**
  * extension install actions, db queries, copying files etc
  *
  * @param string $name
  * @param SimpleXMLElement $config
  * @return bool|null
  */
 public function install($name, $config)
 {
     $ext = new ExtensionUtils($name);
     // gets extension_id for install.php
     $extension_info = $this->getExtensionsList(array('search' => $name));
     $extension_id = $extension_info->row['extension_id'];
     $validate = $this->validateCoreVersion($extension_info->row['key'], $config);
     $errors = $ext->getError();
     if ($errors) {
         $this->session->data['error'] = implode("<br>", $errors);
     }
     if (!$validate) {
         $error = new AError($errors);
         $error->toLog()->toDebug();
         return false;
     }
     //install default settings
     $default_settings = $ext->getDefaultSettings();
     $settings = array($name . '_status' => 0, $name . '_layout' => (string) $config->layout, $name . '_priority' => (string) $config->priority, $name . '_date_installed' => date("Y-m-d H:i:s", time()));
     $settings = array_merge($settings, $default_settings);
     //write info about install into install log
     $install_upgrade_history = new ADataset('install_upgrade_history', 'admin');
     $install_upgrade_history->addRows(array('date_added' => date("Y-m-d H:i:s", time()), 'name' => $name, 'version' => $settings[$name . '_version'], 'backup_file' => '', 'backup_date' => '', 'type' => 'install', 'user' => $this->user->getUsername()));
     // add dependencies into database for required extensions only
     if (isset($config->dependencies->item)) {
         foreach ($config->dependencies->item as $item) {
             if ((bool) $item['required']) {
                 $this->addDependant($name, (string) $item);
             }
         }
     }
     // running sql install script if it exists
     if (isset($config->install->sql)) {
         $file = DIR_EXT . str_replace('../', '', $name) . '/' . (string) $config->install->sql;
         if (is_file($file)) {
             $this->db->performSql($file);
         }
     }
     // running php install script if it exists
     if (isset($config->install->trigger)) {
         $file = DIR_EXT . str_replace('../', '', $name) . '/' . (string) $config->install->trigger;
         if (is_file($file)) {
             include $file;
         }
     }
     // refresh data about updates
     $this->load->model('tool/updater');
     $this->model_tool_updater->check4updates();
     //save default settings for all stores
     $this->load->model('setting/store');
     $stores = $this->model_setting_store->getStores();
     foreach ($stores as $store) {
         $settings['store_id'] = $store['store_id'];
         $this->editSetting($name, $settings);
     }
     return null;
 }
Beispiel #6
0
<?php

include 'extension_utils.php';
$utils = new ExtensionUtils();
$query = $argv[1];
if (strlen($query) < 3) {
    exit(1);
}
$home = exec('printf $HOME');
$maildir = "{$home}/Library/Mail/V2";
$results = $utils->local_find("(kMDItemContentType == 'com.apple.mail.emlx') && (kMDItemSubject == '*" . $query . "*'c || kMDItemAuthors == '*" . $query . "*'c || kMDItemAuthorEmailAddresses == '*" . $query . "*'c)");
$results = array_slice($results, 0, 15);
$output = array();
foreach ($results as $k => $v) {
    exec("mdls -name kMDItemSubject -raw '{$v}'", $title);
    exec("mdls -name kMDItemAuthors -raw '{$v}'", $subtitle);
    $subtitle = trim(str_replace("\"", "", $subtitle[1]));
    $temp = array('title' => utf8_encode(htmlentities($title[0])), 'subtitle' => "From: " . utf8_encode(htmlentities($subtitle)), 'icon' => 'icon.png', 'uid' => '', 'arg' => $v);
    array_push($output, $temp);
    unset($title, $subtitle);
}
echo $utils->arrayToXML($output);