public function ajax() { $act = $this->input->get('act', '', 'cmd'); $model = FOFModel::getAnInstance('Confwiz', 'AkeebaModel'); $model->setState('act', $act); $ret = $model->runAjax(); @ob_end_clean(); echo '###' . json_encode($ret) . '###'; flush(); JFactory::getApplication()->close(); }
public function onDisplay($tpl = null) { $model = $this->getModel(); $task = $model->getState('task', 'components'); // Add submenus (those nifty text links below the toolbar!) $toolbar = FOFToolbar::getAnInstance($this->input->get('option', 'com_foobar', 'cmd'), $this->config); $link = JURI::base() . '?option=com_akeeba&view=extfilter&task=components'; $toolbar->appendLink(JText::_('EXTFILTER_COMPONENTS'), $link, $task == 'components'); $link = JURI::base() . '?option=com_akeeba&view=extfilter&task=modules'; $toolbar->appendLink(JText::_('EXTFILTER_MODULES'), $link, $task == 'modules'); $link = JURI::base() . '?option=com_akeeba&view=extfilter&task=plugins'; $toolbar->appendLink(JText::_('EXTFILTER_PLUGINS'), $link, $task == 'plugins'); $link = JURI::base() . '?option=com_akeeba&view=extfilter&task=languages'; $toolbar->appendLink(JText::_('EXTFILTER_LANGUAGES'), $link, $task == 'languages'); $link = JURI::base() . '?option=com_akeeba&view=extfilter&task=templates'; $toolbar->appendLink(JText::_('EXTFILTER_TEMPLATES'), $link, $task == 'templates'); switch ($task) { case 'components': // Pass along the list of components $this->components = $model->getComponents(); break; case 'modules': // Pass along the list of components $this->modules = $model->getModules(); break; case 'plugins': // Pass along the list of components $this->plugins = $model->getPlugins(); break; case 'templates': // Pass along the list of components $this->templates = $model->getTemplates(); break; case 'languages': // Pass along the list of components $this->languages = $model->getLanguages(); break; } $this->setLayout($task); // Add live help AkeebaHelperIncludes::addHelp('extfilter'); // Get profile ID $profileid = AEPlatform::getInstance()->get_active_profile(); $this->profileid = $profileid; // Get profile name $pmodel = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $pmodel->setId($profileid); $profile_data = $pmodel->getItem(); $this->profilename = $profile_data->description; return true; }
public function onBeforeBrowse() { $result = parent::onBeforeBrowse(); if ($result) { $params = JComponentHelper::getParams('com_akeeba'); $model = $this->getThisModel(); $view = $this->getThisView(); /** @var AkeebaModelCpanels $model */ $view->setModel($model); $aeconfig = AEFactory::getConfiguration(); // Invalidate stale backups AECoreKettenrad::reset(array('global' => true, 'log' => false, 'maxrun' => $params->get('failure_timeout', 180))); // Just in case the reset() loaded a stale configuration... AEPlatform::getInstance()->load_configuration(); // Let's make sure the temporary and output directories are set correctly and writable... $wizmodel = FOFModel::getAnInstance('Confwiz', 'AkeebaModel'); $wizmodel->autofixDirectories(); // Check if we need to toggle the settings encryption feature $model->checkSettingsEncryption(); // Update the magic component parameters $model->updateMagicParameters(); // Run the automatic database check $model->checkAndFixDatabase(); // Run the automatic update site refresh $model->refreshUpdateSite(); // Check the last installed version $versionLast = null; if (file_exists(JPATH_COMPONENT_ADMINISTRATOR . '/akeeba.lastversion.php')) { include_once JPATH_COMPONENT_ADMINISTRATOR . '/akeeba.lastversion.php'; if (defined('AKEEBA_LASTVERSIONCHECK')) { $versionLast = AKEEBA_LASTVERSIONCHECK; } } if (is_null($versionLast)) { $component = JComponentHelper::getComponent('com_akeeba'); if (is_object($component->params) && $component->params instanceof JRegistry) { $params = $component->params; } else { $params = new JParameter($component->params); } $versionLast = $params->get('lastversion', ''); } if (version_compare(AKEEBA_VERSION, $versionLast, 'ne') || empty($versionLast)) { $this->setRedirect('index.php?option=com_akeeba&view=postsetup'); return true; } } return $result; }
/** * Returns the numeric ID of the Site Transfer Wizard profile, or 0 if there * is no STW profile created yet. * * @staticvar int $id Cached ID * @return int The ID of the Site Transfer Wizard profile, or 0 if it doesn't exist */ public function getSTWProfileID() { static $id = -1; if ($id < 0) { $m = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $profiles = $m->getItemList(true); $id = 0; foreach ($profiles as $profile) { if ($profile->description == $this->stwProfileName) { $id = $profile->id; break; } } } return $id; }
public function onBrowse($tpl = null) { $media_folder = JURI::base() . '../media/com_akeeba/'; // Get the root URI for media files $this->assign('mediadir', AkeebaHelperEscape::escapeJS($media_folder . 'theme/')); // Get a JSON representation of the available roots $filters = AEFactory::getFilters(); $root_info = $filters->getInclusions('dir'); $roots = array(); $options = array(); if (!empty($root_info)) { // Loop all dir definitions foreach ($root_info as $dir_definition) { if (is_null($dir_definition[1])) { // Site root definition has a null element 1. It is always pushed on top of the stack. array_unshift($roots, $dir_definition[0]); } else { $roots[] = $dir_definition[0]; } $options[] = JHTML::_('select.option', $dir_definition[0], $dir_definition[0]); } } $site_root = $roots[0]; $attribs = 'onchange="akeeba_active_root_changed();"'; $this->assign('root_select', JHTML::_('select.genericlist', $options, 'root', $attribs, 'value', 'text', $site_root, 'active_root')); $this->assign('roots', $roots); $tpl = null; // Get a JSON representation of the directory data $model = $this->getModel(); $json = json_encode($model->get_regex_filters($site_root)); $this->assignRef('json', $json); // Add live help AkeebaHelperIncludes::addHelp('regexfsfilter'); // Get profile ID $profileid = AEPlatform::getInstance()->get_active_profile(); $this->assign('profileid', $profileid); // Get profile name $pmodel = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $pmodel->setId($profileid); $profile_data = $pmodel->getItem(); $this->assign('profilename', $profile_data->description); return true; }
public function onBrowse($tpl = null) { $media_folder = JURI::base() . '../media/com_akeeba/'; // Get the root URI for media files $this->assign('mediadir', AkeebaHelperEscape::escapeJS($media_folder . 'theme/')); // Get a JSON representation of the directories data $model = $this->getModel(); $directories = $model->get_directories(); $json = json_encode($directories); $this->assign('json', $json); // Add live help AkeebaHelperIncludes::addHelp('eff'); // Get profile ID $profileid = AEPlatform::getInstance()->get_active_profile(); $this->assign('profileid', $profileid); // Get profile name $pmodel = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $pmodel->setId($profileid); $profile_data = $pmodel->getItem(); $this->assign('profilename', $profile_data->description); return true; }
public function onBrowse($tpl = null) { // Add live help AkeebaHelperIncludes::addHelp('log'); // Get a list of log names $model = $this->getModel(); $this->logs = $model->getLogList(); $tag = $model->getState('tag'); if (empty($tag)) { $tag = null; } $this->tag = $tag; // Get profile ID $profileid = AEPlatform::getInstance()->get_active_profile(); $this->profileid = $profileid; // Get profile name $pmodel = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $pmodel->setId($profileid); $profile_data = $pmodel->getItem(); $this->profilename = $profile_data->description; return true; }
public function add() { $mainframe = JFactory::getApplication(); $option = $this->input->getCmd('option', 'com_tracks'); $db = JFactory::getDBO(); $individualid = $this->input->getInt("individualid", 0); $name = $this->input->get("quickadd", '', 'request', 'string'); $srid = $this->input->getInt("subround_id", 0); $projectid = $mainframe->getUserState($option . "project"); // add the new individual as their name was sent through. if (!$individualid) { $model = FOFModel::getAnInstance('Individuals', 'TracksModel'); $name = explode(" ", $name); $firstname = ucfirst(array_shift($name)); $lastname = ucfirst(implode(" ", $name)); $data = array("first_name" => $firstname, "last_name" => $lastname); $res = $model->save($data); if (!$res) { $msg = Jtext::_('COM_TRACKS_Error_adding_individual') . ': ' . $model->getError(); $this->setRedirect("index.php?option=com_tracks&view=subroundresults&subround_id=" . $srid, $msg, 'error'); } $individualid = $model->getId(); } // check if indivual belongs to project $query = ' SELECT individual_id FROM #__tracks_projects_individuals ' . ' WHERE project_id = ' . $db->Quote($projectid) . ' AND individual_id = ' . $db->Quote($individualid); $db->setQuery($query); $res = $db->loadResult(); if (!$res) { $db->setQuery("INSERT INTO #__tracks_projects_individuals (individual_id, project_id) VALUES (" . $individualid . ", " . $projectid . ")"); $db->query(); } // assign the individual to the subround. if ($individualid && $srid) { $db->setQuery("INSERT INTO #__tracks_rounds_results (individual_id, subround_id) VALUES (" . $individualid . ", " . $srid . ")"); $db->query(); } $this->setRedirect("index.php?option=com_tracks&view=subroundresults&subround_id=" . $srid); }
public function onBrowse($tpl = null) { $media_folder = JURI::base() . '../media/com_akeeba/'; // Get the root URI for media files $this->mediadir = AkeebaHelperEscape::escapeJS($media_folder . 'theme/'); // Get a JSON representation of the available roots $model = $this->getModel(); $root_info = $model->get_roots(); $roots = array(); if (!empty($root_info)) { // Loop all dir definitions foreach ($root_info as $def) { $roots[] = $def->value; $options[] = JHTML::_('select.option', $def->value, $def->text); } } $site_root = '[SITEDB]'; $attribs = 'onchange="akeeba_active_root_changed();"'; $this->root_select = JHTML::_('select.genericlist', $options, 'root', $attribs, 'value', 'text', $site_root, 'active_root'); $this->roots = $roots; $tpl = null; // Get a JSON representation of the directory data $model = $this->getModel(); $json = json_encode($model->get_regex_filters($site_root)); $this->json = $json; // Add live help AkeebaHelperIncludes::addHelp('regexdbfilter'); // Get profile ID $profileid = AEPlatform::getInstance()->get_active_profile(); $this->profileid = $profileid; // Get profile name $pmodel = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $pmodel->setId($profileid); $profile_data = $pmodel->getItem(); $this->profilename = $profile_data->description; return true; }
/** * Method to get the field options. * * @return array The field option objects. */ protected function getOptions() { $options = array(); $this->value = array(); $value_field = $this->element['value_field'] ? (string) $this->element['value_field'] : 'title'; $input = new FOFInput(); $component = ucfirst(str_replace('com_', '', $input->getString('option'))); $view = ucfirst($input->getString('view')); $relation = FOFInflector::pluralize((string) $this->element['name']); $model = FOFModel::getTmpInstance(ucfirst($relation), $component . 'Model'); $table = $model->getTable(); $key = $table->getKeyName(); $value = $table->getColumnAlias($value_field); foreach ($model->getItemList(true) as $option) { $options[] = JHtml::_('select.option', $option->{$key}, $option->{$value}); } if ($id = FOFModel::getAnInstance($view)->getId()) { $table = FOFTable::getInstance($view, $component . 'Table'); $table->load($id); $relations = $table->getRelations()->getMultiple($relation); foreach ($relations as $item) { $this->value[] = $item->getId(); } } return $options; }
/** * This mess of a code is probably not one of my highlights in my code * writing career. It's logically organized, badly architectured but I can * still maintain it - and it works! */ public function onAdd($tpl = null) { $model = $this->getModel(); // Load the Status Helper if (!class_exists('AkeebaHelperStatus')) { JLoader::import('helpers.status', JPATH_COMPONENT_ADMINISTRATOR); } $helper = AkeebaHelperStatus::getInstance(); // Determine default description JLoader::import('joomla.utilities.date'); $jregistry = JFactory::getConfig(); if (version_compare(JVERSION, '3.0', 'ge')) { $tzDefault = $jregistry->get('offset'); } else { $tzDefault = $jregistry->getValue('config.offset'); } $user = JFactory::getUser(); $tz = $user->getParam('timezone', $tzDefault); $dateNow = new JDate('now', $tz); $default_description = JText::_('BACKUP_DEFAULT_DESCRIPTION') . ' ' . $dateNow->format(JText::_('DATE_FORMAT_LC2'), true); $default_description = AkeebaHelperEscape::escapeJS($default_description, "'"); $backup_description = $model->getState('description', $default_description); $comment = $model->getState('comment', ''); // Get a potential return URL $returnurl = $model->getState('returnurl'); if (empty($returnurl)) { $returnurl = ''; } // If a return URL is set *and* the profile's name is "Site Transfer // Wizard", we are running the Site Transfer Wizard if (!class_exists('AkeebaModelProfiles')) { JLoader::import('models.profiles', JPATH_COMPONENT_ADMINISTRATOR); } $cpanelmodel = FOFModel::getAnInstance('Cpanels', 'AkeebaModel'); $profilemodel = new AkeebaModelProfiles(); $profilemodel->setId($cpanelmodel->getProfileID()); $profile_data = $profilemodel->getProfile(); $isSTW = $profile_data->description == 'Site Transfer Wizard (do not rename)' && !empty($returnurl); $this->assign('isSTW', $isSTW); // Get the domain details from scripting facility $aeconfig = AEFactory::getConfiguration(); $script = $aeconfig->get('akeeba.basic.backup_type', 'full'); $scripting = AEUtilScripting::loadScripting(); $domains = array(); if (!empty($scripting)) { foreach ($scripting['scripts'][$script]['chain'] as $domain) { $description = JText::_($scripting['domains'][$domain]['text']); $domain_key = $scripting['domains'][$domain]['domain']; if ($isSTW && $domain_key == 'Packing') { $description = JText::_('BACKUP_LABEL_DOMAIN_PACKING_STW'); } $domains[] = array($domain_key, $description); } } $json_domains = AkeebaHelperEscape::escapeJS(json_encode($domains), '"\\'); // Get the maximum execution time and bias $maxexec = $aeconfig->get('akeeba.tuning.max_exec_time', 14) * 1000; $bias = $aeconfig->get('akeeba.tuning.run_time_bias', 75); // Check if the output directory is writable $quirks = AEUtilQuirks::get_quirks(); $unwritableOutput = array_key_exists('001', $quirks); // Pass on data $this->assign('haserrors', !$helper->status); $this->assign('hasquirks', $helper->hasQuirks()); $this->assign('quirks', $helper->getQuirksCell(!$helper->status)); $this->assign('description', $backup_description); $this->assign('comment', $comment); $this->assign('domains', $json_domains); $this->assign('maxexec', $maxexec); $this->assign('bias', $bias); $this->assign('useiframe', $aeconfig->get('akeeba.basic.useiframe', 0) ? 'true' : 'false'); $this->assign('returnurl', $returnurl); $this->assign('unwritableoutput', $unwritableOutput); if ($aeconfig->get('akeeba.advanced.archiver_engine', 'jpa') == 'jps') { $this->assign('showjpskey', 1); $this->assign('jpskey', $aeconfig->get('engine.archiver.jps.key', '')); } else { $this->assign('showjpskey', 0); } if (AKEEBA_PRO) { $this->assign('showangiekey', 1); $this->assign('angiekey', $aeconfig->get('engine.installer.angie.key', '')); } $this->assign('autostart', $model->getState('autostart')); // Pass on profile info $this->assign('profileid', $cpanelmodel->getProfileID()); // Active profile ID $this->assign('profilelist', $cpanelmodel->getProfilesList()); // List of available profiles // Pass on state information pertaining to SRP $this->assign('srpinfo', $model->getState('srpinfo')); // Add live help AkeebaHelperIncludes::addHelp('backup'); // Set the toolbar title if ($this->srpinfo['tag'] == 'restorepoint') { $subtitle = JText::_('AKEEBASRP'); } elseif ($isSTW) { $subtitle = JText::_('SITETRANSFERWIZARD'); } else { $subtitle = JText::_('BACKUP'); } JToolBarHelper::title(JText::_('AKEEBA') . ':: <small>' . $subtitle . '</small>', 'akeeba'); return true; }
/** * Creates a new model object * * @param string $name The name of the model class, e.g. Items * @param string $prefix The prefix of the model class, e.g. FoobarModel * @param array $config The configuration parameters for the model class * * @return FOFModel The model object */ protected function createModel($name, $prefix = '', $config = array()) { // Make sure $config is an array if (is_object($config)) { $config = (array) $config; } elseif (!is_array($config)) { $config = array(); } $result = null; // Clean the model name $modelName = preg_replace('/[^A-Z0-9_]/i', '', $name); $classPrefix = preg_replace('/[^A-Z0-9_]/i', '', $prefix); $result = FOFModel::getAnInstance($modelName, $classPrefix, $config); return $result; }
public function onBrowse($tpl = null) { $model = $this->getModel(); $task = $model->getState('browse_task', 'normal'); // Add custom submenus $toolbar = FOFToolbar::getAnInstance($this->input->get('option', 'com_foobar', 'cmd'), $this->config); $toolbar->appendLink(JText::_('FILTERS_LABEL_NORMALVIEW'), JURI::base() . 'index.php?option=com_akeeba&view=fsfilter&task=normal', $task == 'normal'); $toolbar->appendLink(JText::_('FILTERS_LABEL_TABULARVIEW'), JURI::base() . 'index.php?option=com_akeeba&view=fsfilter&task=tabular', $task == 'tabular'); $media_folder = JURI::base() . '../media/com_akeeba/'; // Get the root URI for media files $this->mediadir = AkeebaHelperEscape::escapeJS($media_folder . 'theme/'); // Get a JSON representation of the available roots $filters = AEFactory::getFilters(); $root_info = $filters->getInclusions('dir'); $roots = array(); $options = array(); if (!empty($root_info)) { // Loop all dir definitions foreach ($root_info as $dir_definition) { if (is_null($dir_definition[1])) { // Site root definition has a null element 1. It is always pushed on top of the stack. array_unshift($roots, $dir_definition[0]); } else { $roots[] = $dir_definition[0]; } $options[] = JHTML::_('select.option', $dir_definition[0], $dir_definition[0]); } } $site_root = $roots[0]; $attribs = 'onchange="akeeba_active_root_changed();"'; $this->root_select = JHTML::_('select.genericlist', $options, 'root', $attribs, 'value', 'text', $site_root, 'active_root'); $this->roots = $roots; switch ($task) { case 'normal': default: $this->setLayout('default'); // Get a JSON representation of the directory data $model = $this->getModel(); $json = json_encode($model->make_listing($site_root, array(), '')); $this->json = $json; break; case 'tabular': $this->setLayout('tabular'); // Get a JSON representation of the tabular filter data $model = $this->getModel(); $json = json_encode($model->get_filters($site_root)); $this->json = $json; break; } // Add live help AkeebaHelperIncludes::addHelp('fsfilter'); // Get profile ID $profileid = AEPlatform::getInstance()->get_active_profile(); $this->profileid = $profileid; // Get profile name $pmodel = FOFModel::getAnInstance('Profiles', 'AkeebaModel'); $pmodel->setId($profileid); $profile_data = $pmodel->getItem(); $this->profilename = $profile_data->description; return true; }