function testRepeatConsistency()
 {
     global $NON_CACHEABLE_SYMBOLS, $EXTRA_SYMBOLS, $DOCUMENT_HELP, $HTTP_STATUS_CODE, $PREPROCESSABLE_SYMBOLS, $SHIFT_VARIABLES, $CYCLES, $TEMPCODE_SETGET, $LOADED_TPL_CACHE, $META_DATA;
     $NON_CACHEABLE_SYMBOLS = array('CSS_TEMPCODE' => 1, 'JS_TEMPCODE' => 1);
     global $HAS_KEEP_IN_URL;
     $_GET['wide'] = '1';
     $HAS_KEEP_IN_URL = NULL;
     $lists = find_all_previews__by_screen();
     foreach ($lists as $function => $tpls) {
         $template = $tpls[0];
         $hook = NULL;
         if (is_file(get_file_base() . '/_tests/screens_tested/consistency__' . $function)) {
             continue;
         }
         // To make easier to debug through
         if (function_exists('set_time_limit')) {
             @set_time_limit(0);
         }
         init__lorem();
         $META_DATA = array();
         $SHIFT_VARIABLES = array();
         $CYCLES = array();
         $TEMPCODE_SETGET = array();
         $LOADED_TPL_CACHE = array();
         $out1 = render_screen_preview($template, $hook, $function);
         $_out1 = $out1->evaluate();
         init__lorem();
         $META_DATA = array();
         $SHIFT_VARIABLES = array();
         $CYCLES = array();
         $TEMPCODE_SETGET = array();
         $LOADED_TPL_CACHE = array();
         $out2 = render_screen_preview($template, $hook, $function);
         $_out2 = $out2->evaluate();
         $different = $_out1 != $_out2;
         $this->assertFalse($different, 'Screen preview not same each time, ' . $function);
         if (!$different) {
             fclose(fopen(get_file_base() . '/_tests/screens_tested/consistency__' . $function, 'wb'));
             sync_file(get_file_base() . '/_tests/screens_tested/consistency__' . $function);
             fix_permissions(get_file_base() . '/_tests/screens_tested/consistency__' . $function);
         } else {
             $myfile = fopen(get_file_base() . '/_tests/screens_tested/v1__', 'wb');
             fwrite($myfile, $_out1);
             fclose($myfile);
             sync_file(get_file_base() . '/_tests/screens_tested/v1__');
             fix_permissions(get_file_base() . '/_tests/screens_tested/v1__');
             $myfile = fopen(get_file_base() . '/_tests/screens_tested/v2__', 'wb');
             fwrite($myfile, $_out2);
             fclose($myfile);
             sync_file(get_file_base() . '/_tests/screens_tested/v2__');
             fix_permissions(get_file_base() . '/_tests/screens_tested/v2__');
             require_code('diff');
             var_dump(diff_simple_2($_out1, $_out2));
             exit('Error!');
         }
         unset($out1);
         unset($out2);
     }
 }
Exemple #2
0
 /**
  * The UI for editing a CEDI page.
  *
  * @return tempcode	The UI.
  */
 function edit_page()
 {
     $title = get_page_title('CEDI_EDIT_PAGE');
     $__id = get_param('id', '', true);
     if ($__id == '' || strpos($__id, '/') !== false) {
         $_id = get_param_cedi_chain('id');
         $id = intval($_id[0]);
     } else {
         $id = intval($__id);
     }
     check_edit_permission('cat_low', NULL, array('seedy_page', $id));
     if (!has_category_access(get_member(), 'seedy_page', strval($id))) {
         access_denied('CATEGORY_ACCESS');
     }
     $pages = $GLOBALS['SITE_DB']->query_select('seedy_pages', array('*'), array('id' => $id), '', 1);
     if (!array_key_exists(0, $pages)) {
         warn_exit(do_lang_tempcode('MISSING_RESOURCE'));
     }
     $page = $pages[0];
     $page_title = get_translated_text($page['title']);
     $description = get_translated_text($page['description']);
     $_description = get_translated_tempcode($page['description']);
     $redir_url = get_param('redirect', NULL);
     if (is_null($redir_url)) {
         $_redir_url = build_url(array('page' => 'cedi', 'type' => 'misc', 'id' => get_param('id', false, true) == strval(db_get_first_id()) ? NULL : get_param('id', false, true)), get_module_zone('cedi'));
         $redir_url = $_redir_url->evaluate();
     }
     $edit_url = build_url(array('page' => '_SELF', 'redirect' => $redir_url, 'id' => get_param('id', false, true), 'type' => '_edit_page'), '_SELF');
     list($fields, $fields2, $hidden) = $this->get_page_fields($page_title, $page['notes'], $page['hide_posts'], $id);
     require_code('seo2');
     $fields2->attach(seo_get_fields('seedy_page', strval($id)));
     if (addon_installed('awards')) {
         // Awards?
         require_code('awards');
         $fields2->attach(get_award_fields('seedy_page', strval($id)));
     }
     if (has_delete_permission('cat_low', get_member(), NULL, NULL, array('seedy_page', $id)) && $id != db_get_first_id()) {
         $fields2->attach(do_template('FORM_SCREEN_FIELD_SPACER', array('TITLE' => do_lang_tempcode('ACTIONS'))));
         $fields2->attach(form_input_tick(do_lang_tempcode('DELETE'), do_lang_tempcode('DESCRIPTION_DELETE'), 'delete', false));
     }
     $restore_from = get_param_integer('restore_from', -1);
     if ($restore_from != -1) {
         $description = $GLOBALS['SITE_DB']->query_value('translate_history', 'text_original', array('id' => $restore_from, 'lang_id' => $page['description']));
         // Double selection to stop hacking
         $_description = NULL;
     }
     $posting_form = get_posting_form(do_lang('SAVE'), $description, $edit_url, new ocp_tempcode(), $fields, do_lang_tempcode('PAGE_TEXT'), '', $fields2, $_description, NULL, NULL, false);
     // Revision history
     $revision_history = new ocp_tempcode();
     $revisions = $GLOBALS['SITE_DB']->query_select('translate_history', array('*'), array('lang_id' => $page['description']), 'ORDER BY action_time DESC');
     $last_description = $description;
     foreach ($revisions as $revision) {
         $time = $revision['action_time'];
         $date = get_timezoned_date($time);
         $editor = $GLOBALS['FORUM_DRIVER']->get_username($revision['action_member']);
         $restore_url = build_url(array('page' => '_SELF', 'type' => 'edit_page', 'id' => get_param('id', false, true), 'restore_from' => $revision['id']), '_SELF');
         $size = strlen($revision['text_original']);
         require_code('diff');
         if (function_exists('diff_simple_2')) {
             $rendered_diff = diff_simple_2($revision['text_original'], $last_description);
             $last_description = $revision['text_original'];
             $revision_history->attach(do_template('REVISION_HISTORY_LINE', array('_GUID' => 'a46de8a930ecfb814695a50b1c4931ac', 'RENDERED_DIFF' => $rendered_diff, 'EDITOR' => $editor, 'DATE' => $date, 'DATE_RAW' => strval($time), 'RESTORE_URL' => $restore_url, 'URL' => '', 'SIZE' => clean_file_size($size))));
         }
     }
     if (!$revision_history->is_empty() && $restore_from == -1) {
         $revision_history = do_template('REVISION_HISTORY_WRAP', array('_GUID' => '1fc38d9d7ec57af110759352446e533d', 'CONTENT' => $revision_history));
     } elseif (!$revision_history->is_empty()) {
         $revision_history = do_template('REVISION_RESTORE');
     }
     list($warning_details, $ping_url) = handle_conflict_resolution();
     $tree = cedi_breadcrumbs(get_param('id', false, true), NULL, true, true);
     breadcrumb_add_segment($tree, do_lang_tempcode('CEDI_EDIT_PAGE'));
     breadcrumb_set_parents(array(array('_SELF:_SELF:edit_page', do_lang_tempcode('CHOOSE'))));
     return do_template('POSTING_SCREEN', array('_GUID' => 'de53b8902ab1431e0d2d676f7d5471d3', 'PING_URL' => $ping_url, 'WARNING_DETAILS' => $warning_details, 'REVISION_HISTORY' => $revision_history, 'POSTING_FORM' => $posting_form, 'HIDDEN' => $hidden, 'TITLE' => $title, 'TEXT' => paragraph(do_lang_tempcode('CEDI_EDIT_PAGE_TEXT'))));
 }
Exemple #3
0
    function testTempcode()
    {
        $nonempty = paragraph('ignore');
        $tpl = do_template('tempcode_test', array('EMPTY1' => '', 'EMPTY2' => new ocp_tempcode(), 'NONEMPTY' => $nonempty, 'PASSED' => 'This is a passed parameter', 'SIMPLE_ARRAY' => array('1', '2', '3'), 'ARRAY' => array(array('a' => 'A1', 'b' => 'B1', 'c' => 'C1'), array('a' => 'A2', 'b' => 'B2', 'c' => 'C2'), array('a' => 'A3', 'b' => 'B3', 'c' => 'C3'), array('a' => 'A4', 'b' => 'B4', 'c' => 'C4'))));
        $got = $tpl->evaluate();
        $expected = '<h1>Tempcode tests</h1>

<h2>Escaping</h2>

<p>
	\\\'Hello\\\'
</p>
<p>
	\\"Hello\\"
</p>
<p>
	Hello World
</p>
<p>
	Hello\\n World
</p>
<p>
	\\[html]
</p>
<p>
	foo%3Dbar
</p>
<!--
<p>
	<strong>Test<\\/strong></strong>
</p>
-->
<h2>Environmental variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>$MOBILE</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$OCF</td>
		<td>1</td>
	</tr>
</tbody></table>

<h2>Computational variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>$CYCLE,my_cycle,1,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$CYCLE,my_cycle,1,2</td>
		<td>2</td>
	</tr>
	<tr>
		<td>$CYCLE,my_cycle,1,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$FROM_TIMESTAMP,Y-m-d,33424322</td>
		<td>1971-01-22</td>
	</tr>
	<tr>
		<td>$IS_NON_EMPTY,</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$IS_NON_EMPTY,a</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$IS_EMPTY,</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$IS_EMPTY,a</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$NEGATE,3</td>
		<td>-3</td>
	</tr>
	<tr>
		<td>$OBFUSCATE,chris@ocportal.com (check HTML source to see if it is obfuscated)</td>
		<td>&#99;&#x68;&#114;&#x69;&#115;&#x40;&#111;&#x63;&#112;&#x6f;&#114;&#x74;&#97;&#x6c;&#46;&#x63;&#111;&#x6d;</td>
	</tr>
	<tr>
		<td>$FIX_ID,3+2</td>
		<td>3_plus_2</td>
	</tr>
	<tr>
		<td>$SHIFT_DECODE,foobar</td>
		<td></td>
	</tr>
</tbody></table>

<h2>Array variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>+COUNT,SIMPLE_ARRAY</td>
		<td>3</td>
	</tr>
	<tr>
		<td>+IMPLODE, ,SIMPLE_ARRAY</td>
		<td>1 2 3</td>
	</tr>
	<tr>
		<td>+OF,SIMPLE_ARRAY,1</td>
		<td>2</td>
	</tr>
</tbody></table>

<h2>String variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>$WCASE,I am a Mushroom</td>
		<td>I Am A Mushroom</td>
	</tr>
	<tr>
		<td>$LCASE,I am a Mushroom</td>
		<td>i am a mushroom</td>
	</tr>
	<tr>
		<td>$UCASE,I am a Mushroom</td>
		<td>I AM A MUSHROOM</td>
	</tr>
	<tr>
		<td>$REPLACE,a,b,apple</td>
		<td>bpple</td>
	</tr>
	<tr>
		<td>$AT,apple,3</td>
		<td>l</td>
	</tr>
	<tr>
		<td>$SUBSTR,apple,1,2</td>
		<td>pp</td>
	</tr>
	<tr>
		<td>$LENGTH,apple</td>
		<td>5</td>
	</tr>
	<tr>
		<td>$WORDWRAP,i love to eat cheese,5</td>
		<td>i<br />love<br />to<br />eat<br />cheese</td>
	</tr>
	<tr>
		<td>$TRUNCATE_LEFT,i love to eat cheese,5</td>
		<td>i&hellip;</td>
	</tr>
	<tr>
		<td>$TRUNCATE_RIGHT,i love to eat cheese,5</td>
		<td>&hellip;t cheese</td>
	</tr>
	<tr>
		<td>$TRUNCATE_SPREAD,i love to eat cheese,5</td>
		<td>i&hellip;se</td>
	</tr>
	<tr>
		<td>$ESCAPE,Bill &amp; Julie,ENTITY_ESCAPED</td>
		<td>Bill &amp; Julie</td>
	</tr>
</tbody></table>

<h2>Arithmetical variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>$MULT,2,3</td>
		<td>6</td>
	</tr>
	<tr>
		<td>$ROUND,3.23,1</td>
		<td>3.2</td>
	</tr>
	<tr>
		<td>$MAX,3,2</td>
		<td>3</td>
	</tr>
	<tr>
		<td>$MIN,3,2</td>
		<td>2</td>
	</tr>
	<tr>
		<td>$MOD,-2</td>
		<td>2</td>
	</tr>
	<tr>
		<td>$MOD,2</td>
		<td>2</td>
	</tr>
	<tr>
		<td>$REM,3,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$DIV,3,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$SUBTRACT,3,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$ADD,3,2</td>
		<td>5</td>
	</tr>
</tbody></table>

<h2>Logical variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>$NOT,1</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$OR,1,0</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$OR,0,0</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$AND,1,0</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$AND,1,1</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$EQ,3,3</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$EQ,3,2</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$NEQ,3,3</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$NEQ,3,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$LT,1,2</td>
		<td>1</td>
	</tr>
	<tr>
		<td>$LT,2,1</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$GT,1,2</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$GT,2,1</td>
		<td>1</td>
	</tr>
</tbody></table>

<h2>Variable variables</h2>

<table summary="Table with headers in left column and values or settings in right column"><tbody>
	<tr>
		<td>$ISSET,test</td>
		<td>0</td>
	</tr>
	<tr>
		<td>$INIT,test,2</td>
		<td></td>
	</tr>
	<tr>
		<td>$GET,test</td>
		<td>2</td>
	</tr>
	<tr>
		<td>$INIT,test,3</td>
		<td></td>
	</tr>
	<tr>
		<td>$GET,test</td>
		<td>2</td>
	</tr>
	<tr>
		<td>$SET,test,3</td>
		<td></td>
	</tr>
	<tr>
		<td>$GET,test</td>
		<td>3</td>
	</tr>
	<tr>
		<td>$INC,test</td>
		<td></td>
	</tr>
	<tr>
		<td>$GET,test</td>
		<td>4</td>
	</tr>
	<tr>
		<td>$DEC,test</td>
		<td></td>
	</tr>
	<tr>
		<td>$GET,test</td>
		<td>3</td>
	</tr>
	<tr>
		<td>$ISSET,test</td>
		<td>1</td>
	</tr>
</tbody></table>

<p>
	Putting #anchor onto URL should cause jump to here.<a name="anchor" id="anchor"></a>
</p>

<h2>Directives</h2>


	<p>
		IF_PASSED true positive (good)
	</p>




	<p>
		IF_PASSED true negative (good)
	</p>



	<p>
		IF_EMPTY true positive (string) (good)
	</p>




	<p>
		IF_EMPTY false negative (tempcode) (good)
	</p>




	<p>
		NOT Adjacent to own codenamed template (but adjacent/under something)
	</p>


bar


	<p>
		IF true positive (good)
	</p>



{$BASE_URL}







	<p>
		Should see this text 3 times.

	</p>

	<p>
		Should see this text 3 times.

	</p>

	<p>
		Should see this text 3 times.

	</p>


<table><tbody>
<tr>
	<td>
		  
	</td>

	<td>
		  
	</td>
</tr><tr>
	<td>
		  
	</td>

	<td>
		  
	</td>
</tr>
</tbody></table>';
        $ok = preg_replace('#\\s#', '', $got) == preg_replace('#\\s#', '', $expected);
        $this->assertTrue($ok);
        if (!$ok) {
            require_code('diff');
            echo diff_simple_2($got, $expected, true);
        }
    }
                                    if ($theme_new != $theme_old) {
                                        $manual_changes['css_diff'][basename($override_file, 'editfrom')] = diff_simple_2($theme_old, $theme_new, true);
                                    }
                                }
                            }
                        }
                        if (substr($file, -4) == '.php') {
                            $matches = array();
                            if (preg_match('#\\n(\\t*)function install(\\_ocf)?\\([^\\n]*\\)\\n\\1\\{\\n(.*)\\n\\1\\}#sU', $old, $matches) != 0) {
                                $old_install_code = $matches[3];
                                $new_install_code = '';
                                if (preg_match('#\\n(\\t*)function install(\\_ocf)?\\([^\\n]*\\)\\n\\1\\{\\n(.*)\\n\\1\\}#sU', $new, $matches) != 0) {
                                    $new_install_code = $matches[3];
                                }
                                if ($new_install_code != $old_install_code) {
                                    $manual_changes['install_diff'][$file] = diff_simple_2($old_install_code, $new_install_code, true);
                                }
                            }
                        }
                    }
                }
            } else {
                if (!should_ignore_file($file, IGNORE_CUSTOM_DIR_CONTENTS | IGNORE_HIDDEN_FILES | IGNORE_THEMES | IGNORE_CUSTOM_ZONES | IGNORE_REVISION_FILES | IGNORE_EDITFROM_FILES)) {
                    $manual_changes['maybe_delete'][$file] = NULL;
                }
            }
        }
        echo '
			<h2>Advice</h2>
		';
        foreach (array('maybe_delete' => 'The following files might need deleting', 'css_diff' => 'The following CSS/tpl changes have happened (diff; may need applying to overridden templates)', 'install_diff' => 'The following install code changes have happened (diff) &ndash; isolate to <kbd>data_custom/execute_temp.php</kbd> to make an adhoc upgrader') as $d => $message) {