Пример #1
0
 /**
  * Redirect to a confirmation page showing in
  * a popup window
  */
 public function confirmdelete($deleteDuplicates = false)
 {
     // find and store edited item id
     $cid = JRequest::getVar('cid', array(0), 'default', 'array');
     // Set the view name and create the view object
     $viewName = 'confirm';
     $document =& JFactory::getDocument();
     $viewType = $document->getType();
     $viewLayout = JRequest::getCmd('layout', $this->_defaultLayout);
     $view =& $this->getView($viewName, $viewType, '', array('base_path' => $this->_basePath));
     // push url id(s) into the view
     $view->assign('cid', $cid);
     // tell it what to display
     $view->assign('mainText', JText16::sprintf('COM_SH404SEF_CONFIRM_URL_DELETION', count($cid)));
     // and who's gonna handle the request
     $view->assign('actionController', $this->_editController);
     // Get/Create the model
     if ($model =& $this->getModel($this->_defaultModel, 'Sh404sefModel')) {
         // store initial context in model
         $model->setContext($this->_context);
         // Push the model into the view (as default)
         $view->setModel($model, true);
         // check if delete duplicates requested
         $view->task = $deleteDuplicates ? 'confirmeddeldup' : 'delete';
     }
     // Set the layout
     $view->setLayout($viewLayout);
     // Display the view
     $view->display();
 }
Пример #2
0
 /**
  * Save a list of aliases as entered by user in backend to the database
  *
  * @param string $aliasList data from an html textarea field
  * @param string $nonSefUrl the non sef url to which aliases are attached
  *
  * @return boolean true on success
  */
 public function saveFromInput($aliasList, $nonSefUrl)
 {
     // split aliases from raw input data into an array
     $aliasList = explode("\n", $aliasList);
     // delete them all. We should do a transaction, but not worth it
     $query = 'DELETE from #__sh404sef_aliases where newurl = ' . $this->_db->Quote($nonSefUrl);
     $this->_db->setQuery($query);
     $this->_db->query();
     // Write new aliases.
     if (!empty($aliasList[0])) {
         $baseQuery = 'INSERT INTO #__sh404sef_aliases (newurl, alias, type) VALUES __shValue__;';
         $endOfLine = array("\r\n", "\n", "\r");
         foreach ($aliasList as $alias) {
             // remove end of line chars
             $alias = str_replace($endOfLine, '', $alias);
             // if something left, try insert it into DB
             if (!empty($alias)) {
                 // first check value is not invalid
                 // either the alias already exists
                 // or same SEF url already exists
                 try {
                     $count = Sh404sefHelperDb::count('#__sh404sef_aliases', 'id', 'oldurl = ? and newurl <> ?', array($alias, ''));
                     if (empty($count)) {
                         $count = Sh404sefHelperDb::count('#__sh404sef_aliases', '*', array('alias' => $alias));
                     }
                 } catch (Sh404sefExceptionDefault $e) {
                     $count = 0;
                 }
                 // if ok, insert into db
                 if (empty($count)) {
                     $value = '(' . $this->_db->Quote($nonSefUrl) . ', ' . $this->_db->Quote($alias) . ', ' . $this->_db->Quote(Sh404sefHelperGeneral::COM_SH404SEF_URLTYPE_ALIAS) . ')';
                     $query = str_replace('__shValue__', $value, $baseQuery);
                     $this->_db->setQuery($query);
                     $this->_db->query();
                     // check errors
                     $error = $this->_db->getErrorNum();
                     if (!empty($error)) {
                         $this->setError('Internal database error # ' . $query);
                     }
                 } else {
                     // alias already exists either as an alias or a SEF url
                     $this->setError(JText16::sprintf('COM_SH404SEF_ALIAS_ALREADY_EXISTS', $alias));
                 }
             }
         }
     }
     // return true if no error
     $error = $this->getError();
     return empty($error);
 }
Пример #3
0
 /**
  * Creates a record in the database, based
  * on data read from import file
  *
  * @param array $header an array of fields, as built from the header line
  * @param string $line raw record obtained from import file
  */
 protected function _createRecord($header, $line)
 {
     // extract the record
     $line = $this->_lineToArray($line);
     // get table object to store record
     jimport('joomla.database.table');
     $table =& JTable::getInstance('pageids', 'Sh404sefTable');
     // bind table to current record
     $record = array();
     $record['newurl'] = $line[3];
     if ($record['newurl'] == '__ Homepage __') {
         $record['newurl'] = sh404SEF_HOMEPAGE_CODE;
     }
     $record['pageid'] = $line[1];
     $record['type'] = $line[4];
     // save record
     if (!$table->save($record)) {
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_IMPORT_ERROR_INSERTING_INTO_DB', $line[0]));
     }
 }
Пример #4
0
 protected function _fetchAccountsList()
 {
     $hClient =& Sh404sefHelperAnalytics::getHttpClient();
     $hClient->resetParameters($clearAll = true);
     // set target API url
     $hClient->setUri($this->_endPoint . 'accounts/default');
     // make sure we use GET
     $hClient->setMethod(Sh_Zend_Http_Client::GET);
     // set headers required by Google Analytics
     $headers = array('GData-Version' => 2, 'Authorization' => 'GoogleLogin auth="' . $this->_Auth . '"');
     $hClient->setHeaders($headers);
     //perform request
     // establish connection with available methods
     $adapters = array('Sh_Zend_Http_Client_Adapter_Curl', 'Sh_Zend_Http_Client_Adapter_Socket');
     $rawResponse = null;
     // perform connect request
     foreach ($adapters as $adapter) {
         try {
             $hClient->setAdapter($adapter);
             $response = $hClient->request();
             break;
         } catch (Exception $e) {
             // need that to be Exception, so as to catch Sh_Zend_Exceptions.. as well
             // we failed, let's try another method
         }
     }
     // return if error
     if (empty($response)) {
         $msg = 'unknown code';
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_ERROR_CHECKING_ANALYTICS', $msg));
     }
     if (empty($response) || !is_object($response) || $response->isError()) {
         $msg = method_exists($response, 'getStatus') ? $response->getStatus() : 'unknown code';
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_ERROR_CHECKING_ANALYTICS', $msg));
     }
     // analyze response
     // check if authentified
     Sh404sefHelperAnalytics::verifyAuthResponse($response);
     $xml = simplexml_load_string($response->getBody());
     if (!empty($xml->entry)) {
         foreach ($xml->entry as $entry) {
             $account = new StdClass();
             $accId = explode(':', (string) $entry->id);
             $account->id = array_pop($accId);
             $account->title = (string) $entry->title;
             $this->_accounts[] = clone $account;
         }
     }
 }
Пример #5
0
 /**
  * Second step, export data
  *
  */
 public function doExport()
 {
     // which button should be displayed ?
     $this->_visibleButtonsList = array();
     // next steps definition
     $this->_steps = array('next' => 1, 'previous' => 0, 'cancel' => -1, 'terminate' => -2);
     // return results
     $result = array();
     // exporting a limited set of pageids at a time
     $nextStart = JRequest::getInt('nextstart', 0);
     // are we adding to an existing data file ?
     $this->_filename = Sh404sefHelperFiles::createFileName($this->_filename, 'sh404sef_export_' . $this->_context);
     // calculate number of items to export
     $model =& JModel::getInstance('urls', 'Sh404sefModel');
     $model->setContext('urls.view404');
     $options = (object) array('layout' => 'view404');
     $this->_total = $model->getTotal($options);
     // do we have anything to export ?
     if (empty($this->_total)) {
         $result['mainText'] = JText16::_('COM_SH404SEF_NOTHING_TO_EXPORT');
         // which button should be displayed ?
         $this->_visibleButtonsList = array('terminate');
         // next step so to trigger download, as file is ready now
         $this->_steps = array('next' => -2, 'previous' => 0, 'cancel' => -1, 'terminate' => -2);
         return $result;
     }
     // get new start item
     if (empty($nextStart)) {
         // this is first pass, starting from 0
         $start = 0;
         $nextStart = $start + self::MAX_PAGEIDS_PER_STEP;
         if ($nextStart >= $this->_total) {
             // reached the end
             $nextStart = $this->_total;
         }
     } else {
         $start = $nextStart;
         $nextStart = $start + self::MAX_PAGEIDS_PER_STEP;
     }
     // are we done ? if so, move to next step
     $result['hiddenText'] = '';
     if ($start >= $this->_total) {
         $result['mainText'] = JText16::sprintf('COM_SH404SEF_EXPORT_DONE', $this->_total);
         $result['mainText'] .= $this->_getTerminateOptions();
         // which button should be displayed ?
         $this->_visibleButtonsList = array('terminate');
         // next step so to trigger download, as file is ready now
         $this->_steps = array('next' => 2, 'previous' => 0, 'cancel' => -1, 'terminate' => -2);
     } else {
         // actually export items
         $this->_export($start);
         // continuing for another round
         $result['mainText'] = JText16::sprintf('COM_SH404SEF_EXPORT_EXPORTING', $start + 1, $this->_total);
         $result['hiddenText'] = '<input type="hidden" name="nextstart" value="' . $nextStart . '" />';
         $result['nextStart'] = $nextStart;
     }
     $result['continue'] = array('task' => 'next', 'nextstart' => $nextStart, 'filename' => base64_encode($this->_filename));
     $result['continue'] = array_merge($result['continue'], $this->_steps);
     $result['hiddenText'] .= '<input type="hidden" name="filename" value="' . $this->_filename . '" />';
     return $result;
 }
Пример #6
0
 public function gridMainUrl(&$url, $i)
 {
     $isMain = $url->rank == 0;
     $imgPrefix = $isMain ? '' : '-non';
     $img = 'components/com_sh404sef/assets/images/icon-16' . $imgPrefix . '-default.png';
     if ($isMain) {
         $alt = JText16::_('COM_SH404SEF_DUPLICATE_IS_MAIN');
         $href = '<img src="' . $img . '" border="0" alt="' . $alt . '" title="' . $alt . '" />';
     } else {
         $alt = JText16::sprintf('COM_SH404SEF_DUPLICATE_MAKE_MAIN', $url->oldurl);
         $href = '
 <a href="javascript:void(0);" onclick="return listItemTask(\'cb' . $i . '\',\'makemainurl\')" title="' . $alt . '">
 <img src="' . $img . '" border="0" alt="' . $alt . '" /></a>';
     }
     return $href;
 }
Пример #7
0
 * SEF module for Joomla!
 *
 * @author      $Author: shumisha $
 * @copyright   Yannick Gaultier - 2007-2010
 * @package     sh404SEF-15
 * @license     http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * @version     $Id: default_top5urls.php 1717 2011-01-13 13:30:08Z silianacom-svn $
 */
// Security check to ensure this file is being included by a parent file.
if (!defined('_JEXEC')) {
    die('Direct Access to this location is not allowed.');
}
?>
<fieldset>
   <legend><?php 
echo JText16::sprintf('COM_SH404SEF_ANALYTICS_TOP5_PAGES', $this->options['max-top-urls']);
?>
</legend>
        
 	<table class="adminlist" >
    <thead>
      <tr>
        <th class="title" >
          <?php 
echo JText::_('NUM');
?>
        </th>
        
        <?php 
$t = JText16::_('COM_SH404SEF_ANALYTICS_TOP5_URL') . '::' . JText16::_('COM_SH404SEF_ANALYTICS_TT_URL_DESC');
?>
Пример #8
0
   </td>
   <td align="center" width="5%">
     <?php 
 if ($this->slowServer) {
     $linkData = array('c' => 'duplicates', 'cid[]' => $url->id, 'tmpl' => 'component');
     $anchor = $url->rank == 0 ? '[<strong>+++</strong>]' : '++';
     $title = $url->rank == 0 ? JText16::_('COM_SH404SEF_IS_A_MAIN_URL') : JText16::_('COM_SH404SEF_IS_DUPLICATE');
     $urlData = array('title' => $title, 'class' => 'modalediturl', 'anchor' => $anchor);
     $modalOptions = array('size' => array('x' => '\\window.getSize().scrollSize.x*.9', 'y' => '\\window.getSize().size.y*.9'));
     echo Sh404sefHelperHtml::makeLink($this, $linkData, $urlData, $modal = true, $modalOptions, $hasTip = false, $extra = '');
 }
 if (empty($url->duplicates)) {
     echo '&nbsp;';
 } else {
     $linkData = array('c' => 'duplicates', 'cid[]' => $url->id, 'tmpl' => 'component');
     $urlData = array('title' => JText16::sprintf('COM_SH404SEF_HAS_DUPLICATES_LINK_TITLE', $url->duplicates), 'class' => 'modalediturl', 'anchor' => $url->duplicates);
     $modalOptions = array('size' => array('x' => '\\window.getSize().scrollSize.x*.9', 'y' => '\\window.getSize().size.y*.9'));
     echo Sh404sefHelperHtml::makeLink($this, $linkData, $urlData, $modal = true, $modalOptions, $hasTip = false, $extra = '');
 }
 ?>
   </td>
   <td align="center" width="5%">
     <?php 
 if (empty($url->aliases)) {
     echo '&nbsp;';
 } else {
     $linkData = array('c' => 'editurl', 'task' => 'edit', 'cid[]' => $url->id, 'tmpl' => 'component', 'startOffset' => 2);
     $urlData = array('title' => 'Has ' . $url->aliases . ' alias(es)', 'class' => 'modalediturl', 'anchor' => $url->aliases);
     $modalOptions = array('size' => array('x' => 700, 'y' => 500));
     echo Sh404sefHelperHtml::makeLink($this, $linkData, $urlData, $modal = true, $modalOptions, $hasTip = false, $extra = '');
 }
Пример #9
0
 /**
  * Creates a record in the database, based
  * on data read from import file
  *
  * @param array $header an array of fields, as built from the header line
  * @param string $line raw record obtained from import file
  */
 protected function _createRecord($header, $line)
 {
     // extract the record
     $line = $this->_lineToArray(trim($line));
     // get table object to store record
     $model =& JModel::getInstance('metas', 'Sh404sefModel');
     // bind table to current record
     $record = array();
     $record['newurl'] = $line[1];
     $record['metatitle'] = $line[4];
     $record['metadesc'] = $line[2];
     $record['metakey'] = $line[3];
     $record['metalang'] = $line[5];
     $record['metarobots'] = $line[6];
     // clean up records
     foreach ($record as $key => $value) {
         if ($value == '&nbsp') {
             $record[$key] = '';
         }
     }
     // find if there is already an url record for this non-sef url. If so
     // we want the imported record to overwrite the existing one.
     // while makinf sure we're doing that with the main url, not one of the duplicates
     $existingRecords = $model->getByAttr(array('newurl' => $record['newurl']));
     if (!empty($existingRecords)) {
         $existingRecord = $existingRecords[0];
         // getByAttr always returns an array
         // use the existing id, this will be enought to override existing record when saving
         $record['id'] = $existingRecord->id;
         // ensure consistency : delete the remaining records, though there is no reason
         // there can be more than one record with same SEF AND same SEF
         array_shift($existingRecords);
         if (!empty($existingRecords)) {
             $db =& JFactory::getDBO();
             $ids = array();
             foreach ($existingRecords as $existingRecord) {
                 $ids[] = $db->Quote($existingRecord->id);
             }
             $query = 'delete from ' . $db->nameQuote('#__sh404SEF_meta') . ' where ' . $db->nameQuote('id') . ' in (' . implode(',', $ids) . ')';
             $db->setQuery($query);
             $db->query();
         }
     } else {
         $record['id'] = 0;
     }
     // save record : returns the record id, so failure is when 0 is returned
     $status = $model->save($record);
     if (!$status) {
         // rethrow a more appropriate error message
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_IMPORT_ERROR_INSERTING_INTO_DB', $line[0]));
     }
 }
Пример #10
0
 /**
  * Use response object from request to update info server
  * to find if an update is required
  *
  * @param object $response
  */
 private function _updateRequired($response)
 {
     // get configuration
     $sefConfig =& shRouter::shGetConfig();
     // compare versions
     $thisVersion = $sefConfig->version == '@ant_version_number@' ? '1.5.10' : $sefConfig->version;
     $response->shouldUpdate = version_compare($thisVersion, $response->current) == -1;
     $response->shouldUpdate = $response->shouldUpdate && version_compare($thisVersion, $response->minVersionToUpgrade) == 1;
     $response->shouldUpdate = $response->shouldUpdate && (empty($response->maxVersionToUpgrade) || version_compare($thisVersion, $response->maxVersionToUpgrade) == -1);
     if ($response->shouldUpdate) {
         // check specific versions exclusion list
         $response->shouldUpdate = $response->shouldUpdate && !in_array($thisVersion, $response->excludes);
     }
     // build status message based on result of should update calculation
     $response->statusMessage = $response->shouldUpdate ? JText16::sprintf('COM_SH404SEF_NEW_VERSION_AVAILABLE') : JText16::sprintf('COM_SH404SEF_YOU_ARE_UP_TO_DATE');
     // return whatever we found
     return $response;
 }
Пример #11
0
 /**
  * Last step, actually perform importation
  *
  */
 public function doImport()
 {
     // collect file and import type information
     $this->_filename = JRequest::getString('filename');
     try {
         // read file content in an array
         $lines = file($this->_filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
         // start analysing
         if (empty($lines)) {
             throw new Sh404sefExceptionDefault('COM_SH404SEF_ERROR_IMPORT');
         }
         // extract header line
         $header = array_shift($lines);
         if (empty($header)) {
             throw new Sh404sefExceptionDefault('COM_SH404SEF_ERROR_IMPORT');
         }
         // turn header into an array
         $header = $this->_lineToArray($header);
         // count items
         $this->_total = count($lines);
         // iterate through file content and create each record
         foreach ($lines as $line) {
             $this->_createRecord($header, $line);
         }
         // get back memory
         unset($lines);
         // delete temporary uploaded file
         JFile::delete($this->_filename);
         // which button should be displayed ?
         $this->_visibleButtonsList = array('terminate');
         // next steps definition
         $this->_steps = array('next' => 3, 'previous' => 0, 'cancel' => -1, 'terminate' => -2);
         // setup display of wizard last page
         $this->_result['hiddenText'] = '';
         $this->_result['mainText'] = JText16::sprintf('COM_SH404SEF_IMPORT_DONE', $this->_total, $this->_context);
         $this->_result['mainText'] .= $this->_getTerminateOptions();
     } catch (Sh404sefExceptionDefault $e) {
         $this->_handleException($e);
     }
     return $this->_result;
 }
Пример #12
0
 *
 * @author      $Author: shumisha $
 * @copyright   Yannick Gaultier - 2007-2010
 * @package     sh404SEF-15
 * @license     http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * @version     $Id: default_top5referrers.php 1717 2011-01-13 13:30:08Z silianacom-svn $
 */
// Security check to ensure this file is being included by a parent file.
if (!defined('_JEXEC')) {
    die('Direct Access to this location is not allowed.');
}
?>

<fieldset>
   <legend><?php 
echo JText16::sprintf('COM_SH404SEF_ANALYTICS_TOP5_REFERRERS', $this->options['max-top-referrers']);
?>
</legend>
        
  <table class="adminlist">
    <thead>
      <tr>
        <th class="title" width="3%">
          <?php 
echo JText::_('NUM');
?>
        </th>
        
        <?php 
$t = JText16::_('COM_SH404SEF_ANALYTICS_TOP5_REF_SOURCE') . '::' . JText16::_('COM_SH404SEF_ANALYTICS_TT_SOURCE_SITE_DESC');
?>
Пример #13
0
          <td colspan="6">
            <?php 
echo $this->pagination->getListFooter();
?>
          </td>
        </tr>
      </tfoot>
      <tbody>
        <?php 
$k = 0;
if ($this->itemCount > 0) {
    for ($i = 0; $i < $this->itemCount; $i++) {
        $url =& $this->items[$i];
        $checked = JHtml::_('grid.id', $i, $url->id);
        $custom = !empty($url->newurl) && $url->dateadd != '0000-00-00' ? '<img src="components/com_sh404sef/assets/images/icon-16-user.png" border="0" alt="Custom" />' : '&nbsp;';
        $alt = JText16::sprintf('COM_SH404SEF_NOT_FOUND_REDIRECT_TO', $this->escape($this->url->get('oldurl')), $this->escape($url->oldurl));
        $oldUrl = '
              <a href="javascript:void(0);" onclick="return listItemAjaxTask(\'cb' . $i . '\',\'selectnfredirect\', {}, 1)" title="' . $alt . '">' . $this->escape($url->oldurl) . '</a>';
        ?>
        <tr class="<?php 
        echo "row{$k}";
        ?>
">
          <td align="center" >
            <?php 
        echo $this->pagination->getRowOffset($i);
        ?>
          </td>
          <td align="center">
            <?php 
        echo $checked;
Пример #14
0
 /**
  * Creates a record in the database, based
  * on data read from import file
  *
  * @param array $header an array of fields, as built from the header line
  * @param string $line raw record obtained from import file
  */
 protected function _createRecord($header, $line)
 {
     // extract the record
     $line = $this->_lineToArray($line);
     // get table object to store record
     $model =& JModel::getInstance('editurl', 'Sh404sefModel');
     // bind table to current record
     $record = array();
     $record['oldurl'] = $line[1];
     $record['newurl'] = $line[2];
     if ($record['newurl'] == '__ Homepage __') {
         $record['newurl'] = sh404SEF_HOMEPAGE_CODE;
     }
     $record['cpt'] = $line[3];
     $record['rank'] = $line[4];
     $record['dateadd'] = $line[5];
     $record['metatitle'] = $line[6];
     $record['metadesc'] = $line[7];
     $record['metakey'] = $line[8];
     $record['metalang'] = $line[9];
     $record['metarobots'] = $line[10];
     // find if there is already an url record for this non-sef url. If so
     // we want the imported record to overwrite the existing one.
     // while makinf sure we're doing that with the main url, not one of the duplicates
     $existingRecords = $model->getByAttr(array('newurl' => $record['newurl'], 'oldurl' => $record['oldurl']));
     if (!empty($existingRecords)) {
         $existingRecord = $existingRecords[0];
         // getByAttr always returns an array
         // use the existing id, this will be enought to override existing record when saving
         $record['id'] = $existingRecord->id;
         // ensure consistency : delete the remaining records, though there is no reason
         // there can be more than one record with same SEF AND same SEF
         array_shift($existingRecords);
         if (!empty($existingRecords)) {
             $db =& JFactory::getDBO();
             $ids = array();
             foreach ($existingRecords as $existingRecord) {
                 $ids[] = $db->Quote($existingRecord->id);
             }
             $query = 'delete from ' . $db->nameQuote('#__redirection') . ' where ' . $db->nameQuote('id') . ' in (' . implode(',', $ids) . ')';
             $db->setQuery($query);
             $db->query();
         }
     } else {
         $record['id'] = 0;
     }
     // find if we already have a meta data record for this non-sef url
     // as we want to update it if so, instead of creating a new record
     $metasModel =& JModel::getInstance('metas', 'Sh404sefModel');
     $existingMetas = $metasModel->getByAttr(array('newurl' => $record['newurl']));
     if (!empty($existingMetas)) {
         $existingMeta = $existingMetas[0];
         // getByAttr always returns an array
         // use the existing id, this will be enought to override existing record when saving
         $record['meta_id'] = $existingMeta->id;
     } else {
         $record['meta_id'] = 0;
     }
     // for aliases, we don't import them here, but we need to create a dummy
     // record so as to preserve possible pre-existing aliases for the same non-sef url
     $aliasesModel =& JModel::getInstance('editalias', 'Sh404sefModel');
     $existingAliases = $aliasesModel->getByAttr(array('newurl' => $record['newurl']));
     $record['shAliasList'] = '';
     if (!empty($existingAliases)) {
         foreach ($existingAliases as $existingAlias) {
             // build up a text list, just as if we were to edit aliases
             // as this is what the model expect to receive
             $record['shAliasList'] .= $existingAlias->alias . "\n";
         }
     }
     // save record : returns the record id, so failure is when 0 is returned
     $savedId = $model->save($record, sh404SEF_URLTYPE_AUTO);
     if (empty($savedId)) {
         // rethrow a more appropriate error message
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_IMPORT_ERROR_INSERTING_INTO_DB', $line[0]));
     }
 }
Пример #15
0
 /**
  * Connects to analytics supplier
  *
  * Meant to be overloaded by adapter
  *
  * @param $config , sef config object, holding connecton parameters
  */
 protected function _connect()
 {
     // get the http client
     $hClient =& Sh404sefHelperAnalytics::getHttpClient();
     // establish connection with available methods
     $adapters = array('Sh_Zend_Http_Client_Adapter_Curl', 'Sh_Zend_Http_Client_Adapter_Socket');
     $rawResponse = null;
     // perform connect request
     foreach ($adapters as $adapter) {
         try {
             $hClient->setAdapter($adapter);
             $rawResponse = $hClient->request();
             break;
         } catch (Exception $e) {
             // need that to be Exception, so as to catch Sh_Zend_Exceptions.. as well
             // we failed, let's try another method
             //echo '<br />exception in _connect' . $e->getMessage();
         }
     }
     // return if error
     if (empty($rawResponse)) {
         $msg = 'unknown code';
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_ERROR_CHECKING_ANALYTICS', $msg));
     }
     if (!is_object($rawResponse) || $rawResponse->isError()) {
         $msg = method_exists($rawResponse, 'getStatus') ? $rawResponse->getStatus() : 'unknown code';
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_ERROR_CHECKING_ANALYTICS', $msg));
     }
     // success, return response
     return $rawResponse;
 }
Пример #16
0
 /**
  * Redirect to a confirmation page showing in
  * a popup window
  */
 private function _doConfirmPurge($type = 'auto')
 {
     // Set the view name and create the view object
     $viewName = 'confirm';
     $document =& JFactory::getDocument();
     $viewType = $document->getType();
     $viewLayout = JRequest::getCmd('layout', $this->_defaultLayout);
     $view =& $this->getView($viewName, $viewType, '', array('base_path' => $this->_basePath));
     // and who's gonna handle the request
     $view->assign('actionController', $this->_defaultController);
     // Get/Create the model
     if ($model =& $this->getModel($this->_defaultModel, 'Sh404sefModel')) {
         // store context of the main url view in the model
         $model->setContext('com_sh404sef.aliases.aliases.default');
         // Push the model into the view (as default)
         $view->setModel($model, true);
     }
     // tell it what to display
     // we purge aliases, count them first
     $numberOfAliases = $model->getAliasesCount($type);
     // if nothing to do, say so and return to main page
     if (empty($numberOfAliases)) {
         $view->assign('redirectTo', $this->_getDefaultRedirect());
         $view->assign('message', JText16::_('COM_SH404SEF_NORECORDS'));
     } else {
         // calculate the message and some hidden data to be passed
         // through the confirmation box
         switch ($type) {
             case 'selected':
                 $mainText = JText16::sprintf('COM_SH404SEF_CONFIRM_PURGE_ALIASES_SELECTED', $numberOfAliases);
                 break;
             case 'auto':
                 $mainText = JText16::sprintf('COM_SH404SEF_CONFIRM_PURGE_ALIASES', $numberOfAliases);
             default:
                 break;
         }
         $hiddenText = '<input type="hidden" name="delete_type" value="' . $type . '" />';
         // push that into the view
         $view->assign('mainText', $mainText);
         $view->assign('hiddenText', $hiddenText);
     }
     // Set the layout
     $view->setLayout($viewLayout);
     // Display the view
     $view->display();
 }
Пример #17
0
 /**
  * Creates a record in the database, based
  * on data read from import file
  *
  * @param array $header an array of fields, as built from the header line
  * @param string $line raw record obtained from import file
  */
 protected function _createRecord($header, $line)
 {
     // extract the record
     $line = $this->_lineToArray($line);
     // get table object to store record
     $model =& JModel::getInstance('aliases', 'Sh404sefModel');
     // bind table to current record
     $record = array();
     $record['newurl'] = $line[3];
     if ($record['newurl'] == '__ Homepage __') {
         $record['newurl'] = sh404SEF_HOMEPAGE_CODE;
     }
     $record['alias'] = $line[1];
     $record['type'] = $line[4];
     // find if there is already same alias record for this non-sef url. If so
     // we want the imported record to overwrite the existing one.
     $existingRecords = $model->getByAttr(array('newurl' => $record['newurl'], 'alias' => $record['alias']));
     if (!empty($existingRecords)) {
         $existingRecord = $existingRecords[0];
         // getByAttr always returns an array
         // use the existing id, this will be enought to override existing record when saving
         $record['id'] = $existingRecord->id;
         // ensure consistency : delete the remaining records, though there is no reason
         // there can be more than one record with same alias AND same SEF
         array_shift($existingRecords);
         if (!empty($existingRecords)) {
             $db =& JFactory::getDBO();
             $ids = array();
             foreach ($existingRecords as $existingRecord) {
                 $ids[] = $db->Quote($existingRecord->id);
             }
             $query = 'delete from ' . $db->nameQuote('#__sh404sef_aliases') . ' where ' . $db->nameQuote('id') . ' in (' . implode(',', $ids) . ')';
             $db->setQuery($query);
             $db->query();
         }
     }
     // save record : returns the record id, so failure is when 0 is returned
     try {
         $model->save($record);
     } catch (Sh404sefExceptionDefault $e) {
         // rethrow a more appropriate error message
         throw new Sh404sefExceptionDefault(JText16::sprintf('COM_SH404SEF_IMPORT_ERROR_INSERTING_INTO_DB', $line[0]));
     }
 }