/** * save a record * @return void */ function save() { $error = false; $errorMsg = ""; $model = $this->getModel($this->get('suffix')); $config = Mysite::getInstance(); $properties = $config->getProperties(); foreach (@$properties as $key => $value) { unset($row); $row = $model->getTable('config'); $newvalue = JRequest::getVar($key); $value_exists = array_key_exists($key, $_POST); if ($value_exists && !empty($key)) { // proceed if newvalue present in request. prevents overwriting for non-existent values. $row->load(array('config_name' => $key)); $row->config_name = $key; $row->value = $newvalue; if (!$row->save()) { $error = true; $errorMsg .= JText::_("Could not store") . " {$key} :: " . $row->getError() . " - "; } } } if (!$error) { $this->messagetype = 'message'; $this->message = JText::_('Saved'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onAfterSave' . $this->get('suffix'), array($row)); } else { $this->messagetype = 'notice'; $this->message = JText::_('Save Failed') . " - " . $errorMsg; } $redirect = "index.php?option=com_mysite"; $task = JRequest::getVar('task'); switch ($task) { default: $redirect .= "&view=" . $this->get('suffix'); break; } $redirect = JRoute::_($redirect, false); $this->setRedirect($redirect, $this->message, $this->messagetype); }
/** * * @return void **/ function _default($tpl = null) { Mysite::load('DSCTools', 'library.tools'); // check config $row = Mysite::getInstance(); $this->assign('row', $row); // add toolbar buttons JToolBarHelper::save('save'); JToolBarHelper::cancel('close', JText::_('Close')); // plugins $filtered = array(); $items = DSCTools::getPlugins(); for ($i = 0; $i < count($items); $i++) { $item =& $items[$i]; // Check if they have an event if ($hasEvent = DSCTools::hasEvent($item, 'onListConfigMysite')) { // add item to filtered array $filtered[] = $item; } } $items = $filtered; $this->assign('items_sliders', $items); // Add pane jimport('joomla.html.pane'); $sliders = JPane::getInstance('sliders'); $this->assign('sliders', $sliders); // form $validate = JUtility::getToken(); $form = array(); $view = strtolower(JRequest::getVar('view')); $form['action'] = "index.php?option=com_mysite&controller={$view}&view={$view}"; $form['validate'] = "<input type='hidden' name='{$validate}' value='1' />"; $this->assign('form', $form); // set the required image // TODO Fix this to use defines $required = new stdClass(); $required->text = JText::_('Required'); $required->image = "<img src='" . JURI::root() . "/media/com_mysite/images/required_16.png' alt='{$required->text}'>"; $this->assign('required', $required); }
<?php echo JText::_("Copyright"); ?> : <?php echo Mysite::getInstance()->getCopyrightYear(); ?> © <a href="<?php echo $url; ?> " target="_blank">Dioscouri Design</a> <br/> <?php echo JText::_("Version"); ?> : <?php echo Mysite::getInstance()->getVersion(); ?> </td> <td style="text-align: right; width: 33%;"> <a href="<?php echo $url; ?> " target="_blank"><img src="<?php echo $img_path . "/" . $img_file; ?> "></img></a> </td> </tr> </tbody> </table>
/** * Generates the sitemap items for selected menus * * @return unknown_type */ function generateItems() { JLoader::import('com_mysite.tables.items', JPATH_ADMINISTRATOR . DS . 'components'); $db =& JFactory::getDBO(); $updated = 0; $cids = JRequest::getVar('cid', array(0), 'request', 'array'); $config = Mysite::getInstance(); $limit = $config->get('tree_depth', '0'); if (!empty($limit)) { if (version_compare(JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6+ code here $limit_query = "AND menu.level <= '{$limit}'"; } else { // Joomla! 1.5 code here $limit_query = "AND menu.sublevel <= '{$limit}'"; } } foreach (@$cids as $cid) { if ($cid != 0) { $db->setQuery("SELECT * FROM #__mysite_menus WHERE `menu_id` = '{$cid}'"); $thismenu = $db->loadObject(); $menutype = $thismenu->menutype; // collect all the itemids created from this menu $items_array = array(); $db->setQuery("SELECT itemid FROM #__mysite_items WHERE menutype = '{$menutype}'"); if ($items = $db->loadObjectList()) { foreach ($items as $item) { $items_array[] = $item->itemid; } } // if any items exist for this menutype, do intelligent sync if (!empty($items_array)) { //jimport('joomla.utilities.arrayhelper'); //$items_array = JArrayHelper::fromObject($items); // get all the menu items for this menu type $db->setQuery("\n SELECT menu.* \n FROM #__menu AS menu \n LEFT JOIN #__mysite_menus AS menutypes ON menu.menutype = menutypes.menutype \n WHERE menutypes.enabled = '1' \n AND menu.menutype = '{$menutype}'\n AND menu.published >= '0'\n {$limit_query}\n ORDER BY menu.parent ASC, menu.ordering ASC \n "); $menus = $db->loadObjectList(); //update the menu $did_update = false; $do_reorder = false; foreach ($menus as $menu) { if (in_array($menu->id, $items_array)) { // this menu item has already been synced, so just update some of the key parts // TODO Add config options for: // do update at all? // update title? // update published state? // update menutype? $db->setQuery("UPDATE #__mysite_items \n SET title = '" . $menu->name . "' , \n url = '" . $menu->link . "' \n WHERE itemid = '" . $menu->id . "'"); if ($db->query()) { // TODO Track somethin? $did_update = true; } } else { // create a new record $table = JTable::getInstance('Items', 'MysiteTable'); $parent_table = JTable::getInstance('Items', 'MysiteTable'); $parent_table->load(array('itemid' => $menu->parent)); $table->menutype = $menu->menutype; $table->title = $menu->name; $table->url = $menu->link; $table->itemid = $menu->id; $table->enabled = $menu->published; $table->parent = !empty($parent_table->item_id) ? $parent_table->item_id : 0; if ($table->store()) { // TODO Track something? $did_update = true; $do_reorder = true; } } } if ($did_update) { if ($do_reorder) { $table = JTable::getInstance('Items', 'MysiteTable'); $table->reorder(); } $updated++; } } else { // no Mysite items exist for this menutype, so // rebuild the menu // first create the parent sitemap item for the menu unset($parent); $parent = JTable::getInstance('Items', 'MysiteTable'); $parent->menutype = $thismenu->menutype; $parent->title = $thismenu->title; $parent->url = ""; $parent->itemid = ""; $parent->parent = 0; $parent->store(); $db->setQuery("\n SELECT menu.* \n FROM #__menu AS menu \n LEFT JOIN #__mysite_menus AS menutypes ON menu.menutype = menutypes.menutype \n WHERE menutypes.enabled = '1' \n AND menu.menutype = '{$menutype}'\n AND menu.published >= '0' \n {$limit_query} \n ORDER BY menu.parent ASC, menu.ordering ASC \n "); $menus = $db->loadObjectList(); $parentMap = array(); $parentMap[$parent->item_id] = array(); foreach ($menus as $menu) { $table = JTable::getInstance('Items', 'MysiteTable'); $table->menutype = $menu->menutype; $table->title = $menu->name; $table->url = $menu->link; $table->itemid = $menu->id; $table->enabled = $menu->published; $table->parent = $menu->parent ? $parentMap[$parent->item_id][$menu->parent] : $parent->item_id; $table->store(); $parentMap[$parent->item_id][$menu->id] = $table->id; } $table->reorder(); JPluginHelper::importPlugin('mysite'); $dispatcher =& JDispatcher::getInstance(); $data = array($menutype); $dispatcher->trigger('onGenerateItems', $data); $updated++; } } } $message = ''; $type = ''; if ($updated) { if ($updated == 1) { $message = JText::_('Menu updated'); } else { $message = JText::_('Menus updated'); } $type = 'message'; } else { $message = JText::_('No Sync Necessary'); $type = 'notice'; } JFactory::getApplication()->redirect('index.php?option=com_mysite&view=menus', $message, $type); }