176 Zeilen
		
	
	
	
		
			6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			176 Zeilen
		
	
	
	
		
			6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * AMR test controller
 | |
|  *
 | |
|  * @package     plugin
 | |
|  * @subpackage  Mod Rewrite
 | |
|  * @version     SVN Revision $Rev: 128 $
 | |
|  * @id          $Id: class.modrewrite_contenttest_controller.php 128 2019-07-03 11:58:28Z oldperl $:
 | |
|  * @author      Murat Purc <murat@purc.de>
 | |
|  * @copyright   four for business AG <www.4fb.de>
 | |
|  * @license     http://www.contenido.org/license/LIZENZ.txt
 | |
|  * @link        http://www.4fb.de
 | |
|  * @link        http://www.contenido.org
 | |
|  */
 | |
| 
 | |
| if (!defined('CON_FRAMEWORK')) {
 | |
|     die('Illegal call');
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Content controller to run tests.
 | |
|  *
 | |
|  * @author      Murat Purc <murat@purc.de>
 | |
|  * @package     plugin
 | |
|  * @subpackage  Mod Rewrite
 | |
|  */
 | |
| class ModRewrite_ContentTestController extends ModRewrite_ControllerAbstract {
 | |
| 
 | |
|     /**
 | |
|      * Number of max items to process
 | |
|      * @var  int
 | |
|      */
 | |
|     protected $_iMaxItems = 0;
 | |
| 
 | |
|     /**
 | |
|      * Initializer method, sets some view variables
 | |
|      */
 | |
|     public function init() {
 | |
|         $this->_oView->content = '';
 | |
|         $this->_oView->form_idart_chk = ($this->_getParam('idart')) ? ' checked="checked"' : '';
 | |
|         $this->_oView->form_idcat_chk = ($this->_getParam('idcat')) ? ' checked="checked"' : '';
 | |
|         $this->_oView->form_idcatart_chk = ($this->_getParam('idcatart')) ? ' checked="checked"' : '';
 | |
|         $this->_oView->form_idartlang_chk = ($this->_getParam('idartlang')) ? ' checked="checked"' : '';
 | |
|         $this->_oView->form_maxitems = (int) $this->_getParam('maxitems', 200);
 | |
|         $this->_iMaxItems = $this->_oView->form_maxitems;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Index action
 | |
|      */
 | |
|     public function indexAction() {
 | |
|         $this->_oView->content = '';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test action
 | |
|      */
 | |
|     public function testAction() {
 | |
|         $this->_oView->content = '';
 | |
| 
 | |
|         // Array for testcases
 | |
|         $aTests = array();
 | |
| 
 | |
|         // Instance of mr test
 | |
|         $oMRTest = new ModRewriteTest($this->_iMaxItems);
 | |
| 
 | |
|         $startTime = getmicrotime();
 | |
| 
 | |
|         // Fetch complete CONTENIDO page structure
 | |
|         $aStruct = $oMRTest->fetchFullStructure();
 | |
|         ModRewriteDebugger::add($aStruct, 'mr_test.php $aStruct');
 | |
| 
 | |
|         // Loop through the structure and compose testcases
 | |
|         foreach ($aStruct as $idcat => $aCat) {
 | |
|             // category
 | |
|             $aTests[] = array(
 | |
|                 'url' => $oMRTest->composeURL($aCat, 'c'),
 | |
|                 'level' => $aCat['level'],
 | |
|                 'name' => $aCat['name']
 | |
|             );
 | |
| 
 | |
|             foreach ($aCat['articles'] as $idart => $aArt) {
 | |
|                 // articles
 | |
|                 $aTests[] = array(
 | |
|                     'url' => $oMRTest->composeURL($aArt, 'a'),
 | |
|                     'level' => $aCat['level'],
 | |
|                     'name' => $aCat['name'] . ' :: ' . $aArt['title']
 | |
|                 );
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // compose content
 | |
|         $this->_oView->content = '<pre>';
 | |
| 
 | |
|         $oMRUrlStack = ModRewriteUrlStack::getInstance();
 | |
| 
 | |
|         // first loop to add urls to mr url stack
 | |
|         foreach ($aTests as $p => $v) {
 | |
|             $oMRUrlStack->add($v['url']);
 | |
|         }
 | |
| 
 | |
|         $successCounter = 0;
 | |
|         $failCounter = 0;
 | |
| 
 | |
|         // second loop to do the rest
 | |
|         foreach ($aTests as $p => $v) {
 | |
|             $url = mr_buildNewUrl($v['url']);
 | |
|             $arr = $oMRTest->resolveUrl($url);
 | |
|             $error = '';
 | |
|             $resUrl = $oMRTest->getResolvedUrl();
 | |
|             $color = 'green';
 | |
| 
 | |
|             if ($url !== $resUrl) {
 | |
|                 if ($oMRTest->getRoutingFoundState()) {
 | |
|                     $successCounter++;
 | |
|                     $resUrl = 'route to -> ' . $resUrl;
 | |
|                 } else {
 | |
|                     $color = 'red';
 | |
|                     $failCounter++;
 | |
|                 }
 | |
|             } else {
 | |
|                 $successCounter++;
 | |
|             }
 | |
| 
 | |
|             // @todo: translate
 | |
|             if (isset($arr['error'])) {
 | |
|                 switch ($arr['error']) {
 | |
|                     case ModRewriteController::ERROR_CLIENT:
 | |
|                         $error = 'client';
 | |
|                         break;
 | |
|                     case ModRewriteController::ERROR_LANGUAGE:
 | |
|                         $error = 'language';
 | |
|                         break;
 | |
|                     case ModRewriteController::ERROR_CATEGORY:
 | |
|                         $error = 'category';
 | |
|                         break;
 | |
|                     case ModRewriteController::ERROR_ARTICLE:
 | |
|                         $error = 'article';
 | |
|                         break;
 | |
|                     case ModRewriteController::ERROR_POST_VALIDATION:
 | |
|                         $error = 'validation';
 | |
|                         break;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             $pref = str_repeat('    ', $v['level']);
 | |
| 
 | |
|             // render resolve information for current item
 | |
|             $itemTpl = $this->_oView->lng_result_item_tpl;
 | |
|             $itemTpl = str_replace('{pref}', $pref, $itemTpl);
 | |
|             $itemTpl = str_replace('{name}', $v['name'], $itemTpl);
 | |
|             $itemTpl = str_replace('{url_in}', $v['url'], $itemTpl);
 | |
|             $itemTpl = str_replace('{url_out}', $url, $itemTpl);
 | |
|             $itemTpl = str_replace('{color}', $color, $itemTpl);
 | |
|             $itemTpl = str_replace('{url_res}', $resUrl, $itemTpl);
 | |
|             $itemTpl = str_replace('{err}', $error, $itemTpl);
 | |
|             $itemTpl = str_replace('{data}', $oMRTest->getReadableResolvedData($arr), $itemTpl);
 | |
| 
 | |
|             $this->_oView->content .= "\n" . $itemTpl . "\n";
 | |
|         }
 | |
|         $this->_oView->content .= '</pre>';
 | |
| 
 | |
|         $totalTime = sprintf('%.4f', (getmicrotime() - $startTime));
 | |
| 
 | |
|         // render information about current test
 | |
|         $msg = $this->_oView->lng_result_message_tpl;
 | |
|         $msg = str_replace('{time}', $totalTime, $msg);
 | |
|         $msg = str_replace('{num_urls}', ($successCounter + $failCounter), $msg);
 | |
|         $msg = str_replace('{num_success}', $successCounter, $msg);
 | |
|         $msg = str_replace('{num_fail}', $failCounter, $msg);
 | |
| 
 | |
|         $this->_oView->content = $msg . $this->_oView->content;
 | |
|     }
 | |
| 
 | |
| }
 |