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__); }
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; }
<?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);