diff --git a/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/schema.ser b/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/schema.ser deleted file mode 100644 index 22ea321..0000000 Binary files a/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/ConfigSchema/schema.ser and /dev/null differ diff --git a/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/Filter/YouTube.php b/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/Filter/YouTube.php deleted file mode 100644 index 23df221..0000000 --- a/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/Filter/YouTube.php +++ /dev/null @@ -1,39 +0,0 @@ -]+>.+?'. - 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?#s'; - $pre_replace = '\1'; - return preg_replace($pre_regex, $pre_replace, $html); - } - - public function postFilter($html, $config, $context) { - $post_regex = '#((?:v|cp)/[A-Za-z0-9\-_=]+)#'; - return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html); - } - - protected function armorUrl($url) { - return str_replace('--', '--', $url); - } - - protected function postFilterCallback($matches) { - $url = $this->armorUrl($matches[1]); - return ''. - ''. - ''. - ''; - - } -} - -// vim: et sw=4 sts=4 diff --git a/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/Lexer/PH5P.php b/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/Lexer/PH5P.php deleted file mode 100644 index faf00b8..0000000 --- a/web/framework-1.1.17/vendors/htmlpurifier/standalone/HTMLPurifier/Lexer/PH5P.php +++ /dev/null @@ -1,3904 +0,0 @@ -normalize($html, $config, $context); - $new_html = $this->wrapHTML($new_html, $config, $context); - try { - $parser = new HTML5($new_html); - $doc = $parser->save(); - } catch (DOMException $e) { - // Uh oh, it failed. Punt to DirectLex. - $lexer = new HTMLPurifier_Lexer_DirectLex(); - $context->register('PH5PError', $e); // save the error, so we can detect it - return $lexer->tokenizeHTML($html, $config, $context); // use original HTML - } - $tokens = array(); - $this->tokenizeDOM( - $doc->getElementsByTagName('html')->item(0)-> // - getElementsByTagName('body')->item(0)-> // - getElementsByTagName('div')->item(0) //
- , $tokens); - return $tokens; - } - -} - -/* - -Copyright 2007 Jeroen van der Meer - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - -class HTML5 { - private $data; - private $char; - private $EOF; - private $state; - private $tree; - private $token; - private $content_model; - private $escape = false; - private $entities = array('AElig;','AElig','AMP;','AMP','Aacute;','Aacute', - 'Acirc;','Acirc','Agrave;','Agrave','Alpha;','Aring;','Aring','Atilde;', - 'Atilde','Auml;','Auml','Beta;','COPY;','COPY','Ccedil;','Ccedil','Chi;', - 'Dagger;','Delta;','ETH;','ETH','Eacute;','Eacute','Ecirc;','Ecirc','Egrave;', - 'Egrave','Epsilon;','Eta;','Euml;','Euml','GT;','GT','Gamma;','Iacute;', - 'Iacute','Icirc;','Icirc','Igrave;','Igrave','Iota;','Iuml;','Iuml','Kappa;', - 'LT;','LT','Lambda;','Mu;','Ntilde;','Ntilde','Nu;','OElig;','Oacute;', - 'Oacute','Ocirc;','Ocirc','Ograve;','Ograve','Omega;','Omicron;','Oslash;', - 'Oslash','Otilde;','Otilde','Ouml;','Ouml','Phi;','Pi;','Prime;','Psi;', - 'QUOT;','QUOT','REG;','REG','Rho;','Scaron;','Sigma;','THORN;','THORN', - 'TRADE;','Tau;','Theta;','Uacute;','Uacute','Ucirc;','Ucirc','Ugrave;', - 'Ugrave','Upsilon;','Uuml;','Uuml','Xi;','Yacute;','Yacute','Yuml;','Zeta;', - 'aacute;','aacute','acirc;','acirc','acute;','acute','aelig;','aelig', - 'agrave;','agrave','alefsym;','alpha;','amp;','amp','and;','ang;','apos;', - 'aring;','aring','asymp;','atilde;','atilde','auml;','auml','bdquo;','beta;', - 'brvbar;','brvbar','bull;','cap;','ccedil;','ccedil','cedil;','cedil', - 'cent;','cent','chi;','circ;','clubs;','cong;','copy;','copy','crarr;', - 'cup;','curren;','curren','dArr;','dagger;','darr;','deg;','deg','delta;', - 'diams;','divide;','divide','eacute;','eacute','ecirc;','ecirc','egrave;', - 'egrave','empty;','emsp;','ensp;','epsilon;','equiv;','eta;','eth;','eth', - 'euml;','euml','euro;','exist;','fnof;','forall;','frac12;','frac12', - 'frac14;','frac14','frac34;','frac34','frasl;','gamma;','ge;','gt;','gt', - 'hArr;','harr;','hearts;','hellip;','iacute;','iacute','icirc;','icirc', - 'iexcl;','iexcl','igrave;','igrave','image;','infin;','int;','iota;', - 'iquest;','iquest','isin;','iuml;','iuml','kappa;','lArr;','lambda;','lang;', - 'laquo;','laquo','larr;','lceil;','ldquo;','le;','lfloor;','lowast;','loz;', - 'lrm;','lsaquo;','lsquo;','lt;','lt','macr;','macr','mdash;','micro;','micro', - 'middot;','middot','minus;','mu;','nabla;','nbsp;','nbsp','ndash;','ne;', - 'ni;','not;','not','notin;','nsub;','ntilde;','ntilde','nu;','oacute;', - 'oacute','ocirc;','ocirc','oelig;','ograve;','ograve','oline;','omega;', - 'omicron;','oplus;','or;','ordf;','ordf','ordm;','ordm','oslash;','oslash', - 'otilde;','otilde','otimes;','ouml;','ouml','para;','para','part;','permil;', - 'perp;','phi;','pi;','piv;','plusmn;','plusmn','pound;','pound','prime;', - 'prod;','prop;','psi;','quot;','quot','rArr;','radic;','rang;','raquo;', - 'raquo','rarr;','rceil;','rdquo;','real;','reg;','reg','rfloor;','rho;', - 'rlm;','rsaquo;','rsquo;','sbquo;','scaron;','sdot;','sect;','sect','shy;', - 'shy','sigma;','sigmaf;','sim;','spades;','sub;','sube;','sum;','sup1;', - 'sup1','sup2;','sup2','sup3;','sup3','sup;','supe;','szlig;','szlig','tau;', - 'there4;','theta;','thetasym;','thinsp;','thorn;','thorn','tilde;','times;', - 'times','trade;','uArr;','uacute;','uacute','uarr;','ucirc;','ucirc', - 'ugrave;','ugrave','uml;','uml','upsih;','upsilon;','uuml;','uuml','weierp;', - 'xi;','yacute;','yacute','yen;','yen','yuml;','yuml','zeta;','zwj;','zwnj;'); - - const PCDATA = 0; - const RCDATA = 1; - const CDATA = 2; - const PLAINTEXT = 3; - - const DOCTYPE = 0; - const STARTTAG = 1; - const ENDTAG = 2; - const COMMENT = 3; - const CHARACTR = 4; - const EOF = 5; - - public function __construct($data) { - - $this->data = $data; - $this->char = -1; - $this->EOF = strlen($data); - $this->tree = new HTML5TreeConstructer; - $this->content_model = self::PCDATA; - - $this->state = 'data'; - - while($this->state !== null) { - $this->{$this->state.'State'}(); - } - } - - public function save() { - return $this->tree->save(); - } - - private function char() { - return ($this->char < $this->EOF) - ? $this->data[$this->char] - : false; - } - - private function character($s, $l = 0) { - if($s + $l < $this->EOF) { - if($l === 0) { - return $this->data[$s]; - } else { - return substr($this->data, $s, $l); - } - } - } - - private function characters($char_class, $start) { - return preg_replace('#^(['.$char_class.']+).*#s', '\\1', substr($this->data, $start)); - } - - private function dataState() { - // Consume the next input character - $this->char++; - $char = $this->char(); - - if($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) { - /* U+0026 AMPERSAND (&) - When the content model flag is set to one of the PCDATA or RCDATA - states: switch to the entity data state. Otherwise: treat it as per - the "anything else" entry below. */ - $this->state = 'entityData'; - - } elseif($char === '-') { - /* If the content model flag is set to either the RCDATA state or - the CDATA state, and the escape flag is false, and there are at - least three characters before this one in the input stream, and the - last four characters in the input stream, including this one, are - U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, - and U+002D HYPHEN-MINUS (""), - set the escape flag to false. */ - if(($this->content_model === self::RCDATA || - $this->content_model === self::CDATA) && $this->escape === true && - $this->character($this->char, 3) === '-->') { - $this->escape = false; - } - - /* In any case, emit the input character as a character token. - Stay in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - } elseif($this->char === $this->EOF) { - /* EOF - Emit an end-of-file token. */ - $this->EOF(); - - } elseif($this->content_model === self::PLAINTEXT) { - /* When the content model flag is set to the PLAINTEXT state - THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of - the text and emit it as a character token. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => substr($this->data, $this->char) - )); - - $this->EOF(); - - } else { - /* Anything else - THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that - otherwise would also be treated as a character token and emit it - as a single character token. Stay in the data state. */ - $len = strcspn($this->data, '<&', $this->char); - $char = substr($this->data, $this->char, $len); - $this->char += $len - 1; - - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - $this->state = 'data'; - } - } - - private function entityDataState() { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, emit a U+0026 AMPERSAND character token. - // Otherwise, emit the character token that was returned. - $char = (!$entity) ? '&' : $entity; - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - // Finally, switch to the data state. - $this->state = 'data'; - } - - private function tagOpenState() { - switch($this->content_model) { - case self::RCDATA: - case self::CDATA: - /* If the next input character is a U+002F SOLIDUS (/) character, - consume it and switch to the close tag open state. If the next - input character is not a U+002F SOLIDUS (/) character, emit a - U+003C LESS-THAN SIGN character token and switch to the data - state to process the next input character. */ - if($this->character($this->char + 1) === '/') { - $this->char++; - $this->state = 'closeTagOpen'; - - } else { - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<' - )); - - $this->state = 'data'; - } - break; - - case self::PCDATA: - // If the content model flag is set to the PCDATA state - // Consume the next input character: - $this->char++; - $char = $this->char(); - - if($char === '!') { - /* U+0021 EXCLAMATION MARK (!) - Switch to the markup declaration open state. */ - $this->state = 'markupDeclarationOpen'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Switch to the close tag open state. */ - $this->state = 'closeTagOpen'; - - } elseif(preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new start tag token, set its tag name to the lowercase - version of the input character (add 0x0020 to the character's code - point), then switch to the tag name state. (Don't emit the token - yet; further details will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::STARTTAG, - 'attr' => array() - ); - - $this->state = 'tagName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Emit a U+003C LESS-THAN SIGN character token and a - U+003E GREATER-THAN SIGN character token. Switch to the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<>' - )); - - $this->state = 'data'; - - } elseif($char === '?') { - /* U+003F QUESTION MARK (?) - Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - - } else { - /* Anything else - Parse error. Emit a U+003C LESS-THAN SIGN character token and - reconsume the current input character in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<' - )); - - $this->char--; - $this->state = 'data'; - } - break; - } - } - - private function closeTagOpenState() { - $next_node = strtolower($this->characters('A-Za-z', $this->char + 1)); - $the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName; - - if(($this->content_model === self::RCDATA || $this->content_model === self::CDATA) && - (!$the_same || ($the_same && (!preg_match('/[\t\n\x0b\x0c >\/]/', - $this->character($this->char + 1 + strlen($next_node))) || $this->EOF === $this->char)))) { - /* If the content model flag is set to the RCDATA or CDATA states then - examine the next few characters. If they do not match the tag name of - the last start tag token emitted (case insensitively), or if they do but - they are not immediately followed by one of the following characters: - * U+0009 CHARACTER TABULATION - * U+000A LINE FEED (LF) - * U+000B LINE TABULATION - * U+000C FORM FEED (FF) - * U+0020 SPACE - * U+003E GREATER-THAN SIGN (>) - * U+002F SOLIDUS (/) - * EOF - ...then there is a parse error. Emit a U+003C LESS-THAN SIGN character - token, a U+002F SOLIDUS character token, and switch to the data state - to process the next input character. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => 'state = 'data'; - - } else { - /* Otherwise, if the content model flag is set to the PCDATA state, - or if the next few characters do match that tag name, consume the - next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new end tag token, set its tag name to the lowercase version - of the input character (add 0x0020 to the character's code point), then - switch to the tag name state. (Don't emit the token yet; further details - will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::ENDTAG - ); - - $this->state = 'tagName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Switch to the data state. */ - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F - SOLIDUS character token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => 'char--; - $this->state = 'data'; - - } else { - /* Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - } - } - } - - private function tagNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } else { - /* Anything else - Append the current input character to the current tag token's tag name. - Stay in the tag name state. */ - $this->token['name'] .= strtolower($char); - $this->state = 'tagName'; - } - } - - private function beforeAttributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Stay in the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function attributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's name. - Stay in the attribute name state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['name'] .= strtolower($char); - - $this->state = 'attributeName'; - } - } - - private function afterAttributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the after attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the - before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function beforeAttributeValueState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the attribute value (double-quoted) state. */ - $this->state = 'attributeValueDoubleQuoted'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the attribute value (unquoted) state and reconsume - this input character. */ - $this->char--; - $this->state = 'attributeValueUnquoted'; - - } elseif($char === '\'') { - /* U+0027 APOSTROPHE (') - Switch to the attribute value (single-quoted) state. */ - $this->state = 'attributeValueSingleQuoted'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Switch to the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function attributeValueDoubleQuotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('double'); - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (double-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueDoubleQuoted'; - } - } - - private function attributeValueSingleQuotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if($char === '\'') { - /* U+0022 QUOTATION MARK (') - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('single'); - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (single-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueSingleQuoted'; - } - } - - private function attributeValueUnquotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState(); - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function entityInAttributeValueState() { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, append a U+0026 AMPERSAND character to the - // current attribute's value. Otherwise, emit the character token that - // was returned. - $char = (!$entity) - ? '&' - : $entity; - - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - } - - private function bogusCommentState() { - /* Consume every character up to the first U+003E GREATER-THAN SIGN - character (>) or the end of the file (EOF), whichever comes first. Emit - a comment token whose data is the concatenation of all the characters - starting from and including the character that caused the state machine - to switch into the bogus comment state, up to and including the last - consumed character before the U+003E character, if any, or up to the - end of the file otherwise. (If the comment was started by the end of - the file (EOF), the token is empty.) */ - $data = $this->characters('^>', $this->char); - $this->emitToken(array( - 'data' => $data, - 'type' => self::COMMENT - )); - - $this->char += strlen($data); - - /* Switch to the data state. */ - $this->state = 'data'; - - /* If the end of the file was reached, reconsume the EOF character. */ - if($this->char === $this->EOF) { - $this->char = $this->EOF - 1; - } - } - - private function markupDeclarationOpenState() { - /* If the next two characters are both U+002D HYPHEN-MINUS (-) - characters, consume those two characters, create a comment token whose - data is the empty string, and switch to the comment state. */ - if($this->character($this->char + 1, 2) === '--') { - $this->char += 2; - $this->state = 'comment'; - $this->token = array( - 'data' => null, - 'type' => self::COMMENT - ); - - /* Otherwise if the next seven chacacters are a case-insensitive match - for the word "DOCTYPE", then consume those characters and switch to the - DOCTYPE state. */ - } elseif(strtolower($this->character($this->char + 1, 7)) === 'doctype') { - $this->char += 7; - $this->state = 'doctype'; - - /* Otherwise, is is a parse error. Switch to the bogus comment state. - The next character that is consumed, if any, is the first character - that will be in the comment. */ - } else { - $this->char++; - $this->state = 'bogusComment'; - } - } - - private function commentState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if($char === '-') { - /* Switch to the comment dash state */ - $this->state = 'commentDash'; - - /* EOF */ - } elseif($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append the input character to the comment token's data. Stay in - the comment state. */ - $this->token['data'] .= $char; - } - } - - private function commentDashState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if($char === '-') { - /* Switch to the comment end state */ - $this->state = 'commentEnd'; - - /* EOF */ - } elseif($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append a U+002D HYPHEN-MINUS (-) character and the input - character to the comment token's data. Switch to the comment state. */ - $this->token['data'] .= '-'.$char; - $this->state = 'comment'; - } - } - - private function commentEndState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '-') { - $this->token['data'] .= '-'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['data'] .= '--'.$char; - $this->state = 'comment'; - } - } - - private function doctypeState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'beforeDoctypeName'; - - } else { - $this->char--; - $this->state = 'beforeDoctypeName'; - } - } - - private function beforeDoctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the before DOCTYPE name state. - - } elseif(preg_match('/^[a-z]$/', $char)) { - $this->token = array( - 'name' => strtoupper($char), - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - - } elseif($char === '>') { - $this->emitToken(array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - )); - - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken(array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - )); - - $this->char--; - $this->state = 'data'; - - } else { - $this->token = array( - 'name' => $char, - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - } - } - - private function doctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'AfterDoctypeName'; - - } elseif($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif(preg_match('/^[a-z]$/', $char)) { - $this->token['name'] .= strtoupper($char); - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['name'] .= $char; - } - - $this->token['error'] = ($this->token['name'] === 'HTML') - ? false - : true; - } - - private function afterDoctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the DOCTYPE name state. - - } elseif($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['error'] = true; - $this->state = 'bogusDoctype'; - } - } - - private function bogusDoctypeState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - // Stay in the bogus DOCTYPE state. - } - } - - private function entity() { - $start = $this->char; - - // This section defines how to consume an entity. This definition is - // used when parsing entities in text and in attributes. - - // The behaviour depends on the identity of the next character (the - // one immediately after the U+0026 AMPERSAND character): - - switch($this->character($this->char + 1)) { - // U+0023 NUMBER SIGN (#) - case '#': - - // The behaviour further depends on the character after the - // U+0023 NUMBER SIGN: - switch($this->character($this->char + 1)) { - // U+0078 LATIN SMALL LETTER X - // U+0058 LATIN CAPITAL LETTER X - case 'x': - case 'X': - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE, U+0061 LATIN SMALL LETTER A through to U+0066 - // LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER - // A, through to U+0046 LATIN CAPITAL LETTER F (in other - // words, 0-9, A-F, a-f). - $char = 1; - $char_class = '0-9A-Fa-f'; - break; - - // Anything else - default: - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE (i.e. just 0-9). - $char = 0; - $char_class = '0-9'; - break; - } - - // Consume as many characters as match the range of characters - // given above. - $this->char++; - $e_name = $this->characters($char_class, $this->char + $char + 1); - $entity = $this->character($start, $this->char); - $cond = strlen($e_name) > 0; - - // The rest of the parsing happens bellow. - break; - - // Anything else - default: - // Consume the maximum number of characters possible, with the - // consumed characters case-sensitively matching one of the - // identifiers in the first column of the entities table. - $e_name = $this->characters('0-9A-Za-z;', $this->char + 1); - $len = strlen($e_name); - - for($c = 1; $c <= $len; $c++) { - $id = substr($e_name, 0, $c); - $this->char++; - - if(in_array($id, $this->entities)) { - if ($e_name[$c-1] !== ';') { - if ($c < $len && $e_name[$c] == ';') { - $this->char++; // consume extra semicolon - } - } - $entity = $id; - break; - } - } - - $cond = isset($entity); - // The rest of the parsing happens bellow. - break; - } - - if(!$cond) { - // If no match can be made, then this is a parse error. No - // characters are consumed, and nothing is returned. - $this->char = $start; - return false; - } - - // Return a character token for the character corresponding to the - // entity name (as given by the second column of the entities table). - return html_entity_decode('&'.$entity.';', ENT_QUOTES, 'UTF-8'); - } - - private function emitToken($token) { - $emit = $this->tree->emitToken($token); - - if(is_int($emit)) { - $this->content_model = $emit; - - } elseif($token['type'] === self::ENDTAG) { - $this->content_model = self::PCDATA; - } - } - - private function EOF() { - $this->state = null; - $this->tree->emitToken(array( - 'type' => self::EOF - )); - } -} - -class HTML5TreeConstructer { - public $stack = array(); - - private $phase; - private $mode; - private $dom; - private $foster_parent = null; - private $a_formatting = array(); - - private $head_pointer = null; - private $form_pointer = null; - - private $scoping = array('button','caption','html','marquee','object','table','td','th'); - private $formatting = array('a','b','big','em','font','i','nobr','s','small','strike','strong','tt','u'); - private $special = array('address','area','base','basefont','bgsound', - 'blockquote','body','br','center','col','colgroup','dd','dir','div','dl', - 'dt','embed','fieldset','form','frame','frameset','h1','h2','h3','h4','h5', - 'h6','head','hr','iframe','image','img','input','isindex','li','link', - 'listing','menu','meta','noembed','noframes','noscript','ol','optgroup', - 'option','p','param','plaintext','pre','script','select','spacer','style', - 'tbody','textarea','tfoot','thead','title','tr','ul','wbr'); - - // The different phases. - const INIT_PHASE = 0; - const ROOT_PHASE = 1; - const MAIN_PHASE = 2; - const END_PHASE = 3; - - // The different insertion modes for the main phase. - const BEFOR_HEAD = 0; - const IN_HEAD = 1; - const AFTER_HEAD = 2; - const IN_BODY = 3; - const IN_TABLE = 4; - const IN_CAPTION = 5; - const IN_CGROUP = 6; - const IN_TBODY = 7; - const IN_ROW = 8; - const IN_CELL = 9; - const IN_SELECT = 10; - const AFTER_BODY = 11; - const IN_FRAME = 12; - const AFTR_FRAME = 13; - - // The different types of elements. - const SPECIAL = 0; - const SCOPING = 1; - const FORMATTING = 2; - const PHRASING = 3; - - const MARKER = 0; - - public function __construct() { - $this->phase = self::INIT_PHASE; - $this->mode = self::BEFOR_HEAD; - $this->dom = new DOMDocument; - - $this->dom->encoding = 'UTF-8'; - $this->dom->preserveWhiteSpace = true; - $this->dom->substituteEntities = true; - $this->dom->strictErrorChecking = false; - } - - // Process tag tokens - public function emitToken($token) { - switch($this->phase) { - case self::INIT_PHASE: return $this->initPhase($token); break; - case self::ROOT_PHASE: return $this->rootElementPhase($token); break; - case self::MAIN_PHASE: return $this->mainPhase($token); break; - case self::END_PHASE : return $this->trailingEndPhase($token); break; - } - } - - private function initPhase($token) { - /* Initially, the tree construction stage must handle each token - emitted from the tokenisation stage as follows: */ - - /* A DOCTYPE token that is marked as being in error - A comment token - A start tag token - An end tag token - A character token that is not one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE - An end-of-file token */ - if((isset($token['error']) && $token['error']) || - $token['type'] === HTML5::COMMENT || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF || - ($token['type'] === HTML5::CHARACTR && isset($token['data']) && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))) { - /* This specification does not define how to handle this case. In - particular, user agents may ignore the entirety of this specification - altogether for such documents, and instead invoke special parse modes - with a greater emphasis on backwards compatibility. */ - - $this->phase = self::ROOT_PHASE; - return $this->rootElementPhase($token); - - /* A DOCTYPE token marked as being correct */ - } elseif(isset($token['error']) && !$token['error']) { - /* Append a DocumentType node to the Document node, with the name - attribute set to the name given in the DOCTYPE token (which will be - "HTML"), and the other attributes specific to DocumentType objects - set to null, empty lists, or the empty string as appropriate. */ - $doctype = new DOMDocumentType(null, null, 'HTML'); - - /* Then, switch to the root element phase of the tree construction - stage. */ - $this->phase = self::ROOT_PHASE; - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif(isset($token['data']) && preg_match('/^[\t\n\x0b\x0c ]+$/', - $token['data'])) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - } - } - - private function rootElementPhase($token) { - /* After the initial phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED - (FF), or U+0020 SPACE - A start tag token - An end tag token - An end-of-file token */ - } elseif(($token['type'] === HTML5::CHARACTR && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF) { - /* Create an HTMLElement node with the tag name html, in the HTML - namespace. Append it to the Document object. Switch to the main - phase and reprocess the current token. */ - $html = $this->dom->createElement('html'); - $this->dom->appendChild($html); - $this->stack[] = $html; - - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - } - } - - private function mainPhase($token) { - /* Tokens in the main phase must be handled as follows: */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A start tag token with the tag name "html" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') { - /* If this start tag token was not the first start tag token, then - it is a parse error. */ - - /* For each attribute on the token, check to see if the attribute - is already present on the top element of the stack of open elements. - If it is not, add the attribute and its corresponding value to that - element. */ - foreach($token['attr'] as $attr) { - if(!$this->stack[0]->hasAttribute($attr['name'])) { - $this->stack[0]->setAttribute($attr['name'], $attr['value']); - } - } - - /* An end-of-file token */ - } elseif($token['type'] === HTML5::EOF) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Anything else. */ - } else { - /* Depends on the insertion mode: */ - switch($this->mode) { - case self::BEFOR_HEAD: return $this->beforeHead($token); break; - case self::IN_HEAD: return $this->inHead($token); break; - case self::AFTER_HEAD: return $this->afterHead($token); break; - case self::IN_BODY: return $this->inBody($token); break; - case self::IN_TABLE: return $this->inTable($token); break; - case self::IN_CAPTION: return $this->inCaption($token); break; - case self::IN_CGROUP: return $this->inColumnGroup($token); break; - case self::IN_TBODY: return $this->inTableBody($token); break; - case self::IN_ROW: return $this->inRow($token); break; - case self::IN_CELL: return $this->inCell($token); break; - case self::IN_SELECT: return $this->inSelect($token); break; - case self::AFTER_BODY: return $this->afterBody($token); break; - case self::IN_FRAME: return $this->inFrameset($token); break; - case self::AFTR_FRAME: return $this->afterFrameset($token); break; - case self::END_PHASE: return $this->trailingEndPhase($token); break; - } - } - } - - private function beforeHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "head" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') { - /* Create an element for the token, append the new element to the - current node and push it onto the stack of open elements. */ - $element = $this->insertElement($token); - - /* Set the head element pointer to this new element node. */ - $this->head_pointer = $element; - - /* Change the insertion mode to "in head". */ - $this->mode = self::IN_HEAD; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title". Or an end tag with the tag name "html". - Or a character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or any other start tag token */ - } elseif($token['type'] === HTML5::STARTTAG || - ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') || - ($token['type'] === HTML5::CHARACTR && !preg_match('/^[\t\n\x0b\x0c ]$/', - $token['data']))) { - /* Act as if a start tag token with the tag name "head" and no - attributes had been seen, then reprocess the current token. */ - $this->beforeHead(array( - 'name' => 'head', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inHead($token); - - /* Any other end tag */ - } elseif($token['type'] === HTML5::ENDTAG) { - /* Parse error. Ignore the token. */ - } - } - - private function inHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. - - THIS DIFFERS FROM THE SPEC: If the current node is either a title, style - or script element, append the character to the current node regardless - of its content. */ - if(($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || ( - $token['type'] === HTML5::CHARACTR && in_array(end($this->stack)->nodeName, - array('title', 'style', 'script')))) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('title', 'style', 'script'))) { - array_pop($this->stack); - return HTML5::PCDATA; - - /* A start tag with the tag name "title" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $element = $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the RCDATA state. */ - return HTML5::RCDATA; - - /* A start tag with the tag name "style" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "script" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') { - /* Create an element for the token. */ - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "base", "link", or "meta" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta'))) { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - array_pop($this->stack); - - } else { - $this->insertElement($token); - } - - /* An end tag with the tag name "head" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') { - /* If the current node is a head element, pop the current node off - the stack of open elements. */ - if($this->head_pointer->isSameNode(end($this->stack))) { - array_pop($this->stack); - - /* Otherwise, this is a parse error. */ - } else { - // k - } - - /* Change the insertion mode to "after head". */ - $this->mode = self::AFTER_HEAD; - - /* A start tag with the tag name "head" or an end tag except "html". */ - } elseif(($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') || - ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* If the current node is a head element, act as if an end tag - token with the tag name "head" had been seen. */ - if($this->head_pointer->isSameNode(end($this->stack))) { - $this->inHead(array( - 'name' => 'head', - 'type' => HTML5::ENDTAG - )); - - /* Otherwise, change the insertion mode to "after head". */ - } else { - $this->mode = self::AFTER_HEAD; - } - - /* Then, reprocess the current token. */ - return $this->afterHead($token); - } - } - - private function afterHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "body" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') { - /* Insert a body element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in body". */ - $this->mode = self::IN_BODY; - - /* A start tag token with the tag name "frameset" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') { - /* Insert a frameset element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in frameset". */ - $this->mode = self::IN_FRAME; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta', 'script', 'style', 'title'))) { - /* Parse error. Switch the insertion mode back to "in head" and - reprocess the token. */ - $this->mode = self::IN_HEAD; - return $this->inHead($token); - - /* Anything else */ - } else { - /* Act as if a start tag token with the tag name "body" and no - attributes had been seen, and then reprocess the current token. */ - $this->afterHead(array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inBody($token); - } - } - - private function inBody($token) { - /* Handle the token as follows: */ - - switch($token['type']) { - /* A character token */ - case HTML5::CHARACTR: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - break; - - /* A comment token */ - case HTML5::COMMENT: - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - break; - - case HTML5::STARTTAG: - switch($token['name']) { - /* A start tag token whose tag name is one of: "script", - "style" */ - case 'script': case 'style': - /* Process the token as if the insertion mode had been "in - head". */ - return $this->inHead($token); - break; - - /* A start tag token whose tag name is one of: "base", "link", - "meta", "title" */ - case 'base': case 'link': case 'meta': case 'title': - /* Parse error. Process the token as if the insertion mode - had been "in head". */ - return $this->inHead($token); - break; - - /* A start tag token with the tag name "body" */ - case 'body': - /* Parse error. If the second element on the stack of open - elements is not a body element, or, if the stack of open - elements has only one node on it, then ignore the token. - (innerHTML case) */ - if(count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') { - // Ignore - - /* Otherwise, for each attribute on the token, check to see - if the attribute is already present on the body element (the - second element) on the stack of open elements. If it is not, - add the attribute and its corresponding value to that - element. */ - } else { - foreach($token['attr'] as $attr) { - if(!$this->stack[1]->hasAttribute($attr['name'])) { - $this->stack[1]->setAttribute($attr['name'], $attr['value']); - } - } - } - break; - - /* A start tag whose tag name is one of: "address", - "blockquote", "center", "dir", "div", "dl", "fieldset", - "listing", "menu", "ol", "p", "ul" */ - case 'address': case 'blockquote': case 'center': case 'dir': - case 'div': case 'dl': case 'fieldset': case 'listing': - case 'menu': case 'ol': case 'p': case 'ul': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "form" */ - case 'form': - /* If the form element pointer is not null, ignore the - token with a parse error. */ - if($this->form_pointer !== null) { - // Ignore. - - /* Otherwise: */ - } else { - /* If the stack of open elements has a p element in - scope, then act as if an end tag with the tag name p - had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token, and set the - form element pointer to point to the element created. */ - $element = $this->insertElement($token); - $this->form_pointer = $element; - } - break; - - /* A start tag whose tag name is "li", "dd" or "dt" */ - case 'li': case 'dd': case 'dt': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - $stack_length = count($this->stack) - 1; - - for($n = $stack_length; 0 <= $n; $n--) { - /* 1. Initialise node to be the current node (the - bottommost node of the stack). */ - $stop = false; - $node = $this->stack[$n]; - $cat = $this->getElementCategory($node->tagName); - - /* 2. If node is an li, dd or dt element, then pop all - the nodes from the current node up to node, including - node, then stop this algorithm. */ - if($token['name'] === $node->tagName || ($token['name'] !== 'li' - && ($node->tagName === 'dd' || $node->tagName === 'dt'))) { - for($x = $stack_length; $x >= $n ; $x--) { - array_pop($this->stack); - } - - break; - } - - /* 3. If node is not in the formatting category, and is - not in the phrasing category, and is not an address or - div element, then stop this algorithm. */ - if($cat !== self::FORMATTING && $cat !== self::PHRASING && - $node->tagName !== 'address' && $node->tagName !== 'div') { - break; - } - } - - /* Finally, insert an HTML element with the same tag - name as the token's. */ - $this->insertElement($token); - break; - - /* A start tag token whose tag name is "plaintext" */ - case 'plaintext': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - return HTML5::PLAINTEXT; - break; - - /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - this is a parse error; pop elements from the stack until an - element with one of those tag names has been popped from the - stack. */ - while($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) { - array_pop($this->stack); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "a" */ - case 'a': - /* If the list of active formatting elements contains - an element whose tag name is "a" between the end of the - list and the last marker on the list (or the start of - the list if there is no marker on the list), then this - is a parse error; act as if an end tag with the tag name - "a" had been seen, then remove that element from the list - of active formatting elements and the stack of open - elements if the end tag didn't already remove it (it - might not have if the element is not in table scope). */ - $leng = count($this->a_formatting); - - for($n = $leng - 1; $n >= 0; $n--) { - if($this->a_formatting[$n] === self::MARKER) { - break; - - } elseif($this->a_formatting[$n]->nodeName === 'a') { - $this->emitToken(array( - 'name' => 'a', - 'type' => HTML5::ENDTAG - )); - break; - } - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag whose tag name is one of: "b", "big", "em", "font", - "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'b': case 'big': case 'em': case 'font': case 'i': - case 'nobr': case 's': case 'small': case 'strike': - case 'strong': case 'tt': case 'u': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag token whose tag name is "button" */ - case 'button': - /* If the stack of open elements has a button element in scope, - then this is a parse error; act as if an end tag with the tag - name "button" had been seen, then reprocess the token. (We don't - do that. Unnecessary.) */ - if($this->elementInScope('button')) { - $this->inBody(array( - 'name' => 'button', - 'type' => HTML5::ENDTAG - )); - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is one of: "marquee", "object" */ - case 'marquee': case 'object': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is "xmp" */ - case 'xmp': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Switch the content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "table" */ - case 'table': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - break; - - /* A start tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */ - case 'area': case 'basefont': case 'bgsound': case 'br': - case 'embed': case 'img': case 'param': case 'spacer': - case 'wbr': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "hr" */ - case 'hr': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "image" */ - case 'image': - /* Parse error. Change the token's tag name to "img" and - reprocess it. (Don't ask.) */ - $token['name'] = 'img'; - return $this->inBody($token); - break; - - /* A start tag whose tag name is "input" */ - case 'input': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an input element for the token. */ - $element = $this->insertElement($token, false); - - /* If the form element pointer is not null, then associate the - input element with the form element pointed to by the form - element pointer. */ - $this->form_pointer !== null - ? $this->form_pointer->appendChild($element) - : end($this->stack)->appendChild($element); - - /* Pop that input element off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "isindex" */ - case 'isindex': - /* Parse error. */ - // w/e - - /* If the form element pointer is not null, - then ignore the token. */ - if($this->form_pointer === null) { - /* Act as if a start tag token with the tag name "form" had - been seen. */ - $this->inBody(array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody(array( - 'name' => 'hr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "p" had - been seen. */ - $this->inBody(array( - 'name' => 'p', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "label" - had been seen. */ - $this->inBody(array( - 'name' => 'label', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a stream of character tokens had been seen. */ - $this->insertText('This is a searchable index. '. - 'Insert your search keywords here: '); - - /* Act as if a start tag token with the tag name "input" - had been seen, with all the attributes from the "isindex" - token, except with the "name" attribute set to the value - "isindex" (ignoring any explicit "name" attribute). */ - $attr = $token['attr']; - $attr[] = array('name' => 'name', 'value' => 'isindex'); - - $this->inBody(array( - 'name' => 'input', - 'type' => HTML5::STARTTAG, - 'attr' => $attr - )); - - /* Act as if a stream of character tokens had been seen - (see below for what they should say). */ - $this->insertText('This is a searchable index. '. - 'Insert your search keywords here: '); - - /* Act as if an end tag token with the tag name "label" - had been seen. */ - $this->inBody(array( - 'name' => 'label', - 'type' => HTML5::ENDTAG - )); - - /* Act as if an end tag token with the tag name "p" had - been seen. */ - $this->inBody(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody(array( - 'name' => 'hr', - 'type' => HTML5::ENDTAG - )); - - /* Act as if an end tag token with the tag name "form" had - been seen. */ - $this->inBody(array( - 'name' => 'form', - 'type' => HTML5::ENDTAG - )); - } - break; - - /* A start tag whose tag name is "textarea" */ - case 'textarea': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the - RCDATA state. */ - return HTML5::RCDATA; - break; - - /* A start tag whose tag name is one of: "iframe", "noembed", - "noframes" */ - case 'iframe': case 'noembed': case 'noframes': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "select" */ - case 'select': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in select". */ - $this->mode = self::IN_SELECT; - break; - - /* A start or end tag whose tag name is one of: "caption", "col", - "colgroup", "frame", "frameset", "head", "option", "optgroup", - "tbody", "td", "tfoot", "th", "thead", "tr". */ - case 'caption': case 'col': case 'colgroup': case 'frame': - case 'frameset': case 'head': case 'option': case 'optgroup': - case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead': - case 'tr': - // Parse error. Ignore the token. - break; - - /* A start or end tag whose tag name is one of: "event-source", - "section", "nav", "article", "aside", "header", "footer", - "datagrid", "command" */ - case 'event-source': case 'section': case 'nav': case 'article': - case 'aside': case 'header': case 'footer': case 'datagrid': - case 'command': - // Work in progress! - break; - - /* A start tag token not covered by the previous entries */ - default: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - $this->insertElement($token, true, true); - break; - } - break; - - case HTML5::ENDTAG: - switch($token['name']) { - /* An end tag with the tag name "body" */ - case 'body': - /* If the second element in the stack of open elements is - not a body element, this is a parse error. Ignore the token. - (innerHTML case) */ - if(count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') { - // Ignore. - - /* If the current node is not the body element, then this - is a parse error. */ - } elseif(end($this->stack)->nodeName !== 'body') { - // Parse error. - } - - /* Change the insertion mode to "after body". */ - $this->mode = self::AFTER_BODY; - break; - - /* An end tag with the tag name "html" */ - case 'html': - /* Act as if an end tag with tag name "body" had been seen, - then, if that token wasn't ignored, reprocess the current - token. */ - $this->inBody(array( - 'name' => 'body', - 'type' => HTML5::ENDTAG - )); - - return $this->afterBody($token); - break; - - /* An end tag whose tag name is one of: "address", "blockquote", - "center", "dir", "div", "dl", "fieldset", "listing", "menu", - "ol", "pre", "ul" */ - case 'address': case 'blockquote': case 'center': case 'dir': - case 'div': case 'dl': case 'fieldset': case 'listing': - case 'menu': case 'ol': case 'pre': case 'ul': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with - the same tag name as that of the token, then this - is a parse error. */ - // w/e - - /* If the stack of open elements has an element in - scope with the same tag name as that of the token, - then pop elements from this stack until an element - with that tag name has been popped from the stack. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is "form" */ - case 'form': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - } - - if(end($this->stack)->nodeName !== $token['name']) { - /* Now, if the current node is not an element with the - same tag name as that of the token, then this is a parse - error. */ - // w/e - - } else { - /* Otherwise, if the current node is an element with - the same tag name as that of the token pop that element - from the stack. */ - array_pop($this->stack); - } - - /* In any case, set the form element pointer to null. */ - $this->form_pointer = null; - break; - - /* An end tag whose tag name is "p" */ - case 'p': - /* If the stack of open elements has a p element in scope, - then generate implied end tags, except for p elements. */ - if($this->elementInScope('p')) { - $this->generateImpliedEndTags(array('p')); - - /* If the current node is not a p element, then this is - a parse error. */ - // k - - /* If the stack of open elements has a p element in - scope, then pop elements from this stack until the stack - no longer has a p element in scope. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->elementInScope('p')) { - array_pop($this->stack); - - } else { - break; - } - } - } - break; - - /* An end tag whose tag name is "dd", "dt", or "li" */ - case 'dd': case 'dt': case 'li': - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - generate implied end tags, except for elements with the - same tag name as the token. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(array($token['name'])); - - /* If the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - pop elements from this stack until an element with that - tag name has been popped from the stack. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - generate implied end tags. */ - if($this->elementInScope($elements)) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as that of the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has in scope an element - whose tag name is one of "h1", "h2", "h3", "h4", "h5", or - "h6", then pop elements from the stack until an element - with one of those tag names has been popped from the stack. */ - while($this->elementInScope($elements)) { - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "a", "b", "big", "em", - "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'a': case 'b': case 'big': case 'em': case 'font': - case 'i': case 'nobr': case 's': case 'small': case 'strike': - case 'strong': case 'tt': case 'u': - /* 1. Let the formatting element be the last element in - the list of active formatting elements that: - * is between the end of the list and the last scope - marker in the list, if any, or the start of the list - otherwise, and - * has the same tag name as the token. - */ - while(true) { - for($a = count($this->a_formatting) - 1; $a >= 0; $a--) { - if($this->a_formatting[$a] === self::MARKER) { - break; - - } elseif($this->a_formatting[$a]->tagName === $token['name']) { - $formatting_element = $this->a_formatting[$a]; - $in_stack = in_array($formatting_element, $this->stack, true); - $fe_af_pos = $a; - break; - } - } - - /* If there is no such node, or, if that node is - also in the stack of open elements but the element - is not in scope, then this is a parse error. Abort - these steps. The token is ignored. */ - if(!isset($formatting_element) || ($in_stack && - !$this->elementInScope($token['name']))) { - break; - - /* Otherwise, if there is such a node, but that node - is not in the stack of open elements, then this is a - parse error; remove the element from the list, and - abort these steps. */ - } elseif(isset($formatting_element) && !$in_stack) { - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 2. Let the furthest block be the topmost node in the - stack of open elements that is lower in the stack - than the formatting element, and is not an element in - the phrasing or formatting categories. There might - not be one. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $length = count($this->stack); - - for($s = $fe_s_pos + 1; $s < $length; $s++) { - $category = $this->getElementCategory($this->stack[$s]->nodeName); - - if($category !== self::PHRASING && $category !== self::FORMATTING) { - $furthest_block = $this->stack[$s]; - } - } - - /* 3. If there is no furthest block, then the UA must - skip the subsequent steps and instead just pop all - the nodes from the bottom of the stack of open - elements, from the current node up to the formatting - element, and remove the formatting element from the - list of active formatting elements. */ - if(!isset($furthest_block)) { - for($n = $length - 1; $n >= $fe_s_pos; $n--) { - array_pop($this->stack); - } - - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 4. Let the common ancestor be the element - immediately above the formatting element in the stack - of open elements. */ - $common_ancestor = $this->stack[$fe_s_pos - 1]; - - /* 5. If the furthest block has a parent node, then - remove the furthest block from its parent node. */ - if($furthest_block->parentNode !== null) { - $furthest_block->parentNode->removeChild($furthest_block); - } - - /* 6. Let a bookmark note the position of the - formatting element in the list of active formatting - elements relative to the elements on either side - of it in the list. */ - $bookmark = $fe_af_pos; - - /* 7. Let node and last node be the furthest block. - Follow these steps: */ - $node = $furthest_block; - $last_node = $furthest_block; - - while(true) { - for($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) { - /* 7.1 Let node be the element immediately - prior to node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 7.2 If node is not in the list of active - formatting elements, then remove node from - the stack of open elements and then go back - to step 1. */ - if(!in_array($node, $this->a_formatting, true)) { - unset($this->stack[$n]); - $this->stack = array_merge($this->stack); - - } else { - break; - } - } - - /* 7.3 Otherwise, if node is the formatting - element, then go to the next step in the overall - algorithm. */ - if($node === $formatting_element) { - break; - - /* 7.4 Otherwise, if last node is the furthest - block, then move the aforementioned bookmark to - be immediately after the node in the list of - active formatting elements. */ - } elseif($last_node === $furthest_block) { - $bookmark = array_search($node, $this->a_formatting, true) + 1; - } - - /* 7.5 If node has any children, perform a - shallow clone of node, replace the entry for - node in the list of active formatting elements - with an entry for the clone, replace the entry - for node in the stack of open elements with an - entry for the clone, and let node be the clone. */ - if($node->hasChildNodes()) { - $clone = $node->cloneNode(); - $s_pos = array_search($node, $this->stack, true); - $a_pos = array_search($node, $this->a_formatting, true); - - $this->stack[$s_pos] = $clone; - $this->a_formatting[$a_pos] = $clone; - $node = $clone; - } - - /* 7.6 Insert last node into node, first removing - it from its previous parent node if any. */ - if($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $node->appendChild($last_node); - - /* 7.7 Let last node be node. */ - $last_node = $node; - } - - /* 8. Insert whatever last node ended up being in - the previous step into the common ancestor node, - first removing it from its previous parent node if - any. */ - if($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $common_ancestor->appendChild($last_node); - - /* 9. Perform a shallow clone of the formatting - element. */ - $clone = $formatting_element->cloneNode(); - - /* 10. Take all of the child nodes of the furthest - block and append them to the clone created in the - last step. */ - while($furthest_block->hasChildNodes()) { - $child = $furthest_block->firstChild; - $furthest_block->removeChild($child); - $clone->appendChild($child); - } - - /* 11. Append that clone to the furthest block. */ - $furthest_block->appendChild($clone); - - /* 12. Remove the formatting element from the list - of active formatting elements, and insert the clone - into the list of active formatting elements at the - position of the aforementioned bookmark. */ - $fe_af_pos = array_search($formatting_element, $this->a_formatting, true); - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - - $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1); - $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting)); - $this->a_formatting = array_merge($af_part1, array($clone), $af_part2); - - /* 13. Remove the formatting element from the stack - of open elements, and insert the clone into the stack - of open elements immediately after (i.e. in a more - deeply nested position than) the position of the - furthest block in that stack. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $fb_s_pos = array_search($furthest_block, $this->stack, true); - unset($this->stack[$fe_s_pos]); - - $s_part1 = array_slice($this->stack, 0, $fb_s_pos); - $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack)); - $this->stack = array_merge($s_part1, array($clone), $s_part2); - - /* 14. Jump back to step 1 in this series of steps. */ - unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block); - } - break; - - /* An end tag token whose tag name is one of: "button", - "marquee", "object" */ - case 'button': case 'marquee': case 'object': - /* If the stack of open elements has an element in scope whose - tag name matches the tag name of the token, then generate implied - tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // k - - /* Now, if the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then pop - elements from the stack until that element has been popped from - the stack, and clear the list of active formatting elements up - to the last marker. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - - $marker = end(array_keys($this->a_formatting, self::MARKER, true)); - - for($n = count($this->a_formatting) - 1; $n > $marker; $n--) { - array_pop($this->a_formatting); - } - } - break; - - /* Or an end tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "hr", "iframe", "image", "img", - "input", "isindex", "noembed", "noframes", "param", "select", - "spacer", "table", "textarea", "wbr" */ - case 'area': case 'basefont': case 'bgsound': case 'br': - case 'embed': case 'hr': case 'iframe': case 'image': - case 'img': case 'input': case 'isindex': case 'noembed': - case 'noframes': case 'param': case 'select': case 'spacer': - case 'table': case 'textarea': case 'wbr': - // Parse error. Ignore the token. - break; - - /* An end tag token not covered by the previous entries */ - default: - for($n = count($this->stack) - 1; $n >= 0; $n--) { - /* Initialise node to be the current node (the bottommost - node of the stack). */ - $node = end($this->stack); - - /* If node has the same tag name as the end tag token, - then: */ - if($token['name'] === $node->nodeName) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* If the tag name of the end tag token does not - match the tag name of the current node, this is a - parse error. */ - // k - - /* Pop all the nodes from the current node up to - node, including node, then stop this algorithm. */ - for($x = count($this->stack) - $n; $x >= $n; $x--) { - array_pop($this->stack); - } - - } else { - $category = $this->getElementCategory($node); - - if($category !== self::SPECIAL && $category !== self::SCOPING) { - /* Otherwise, if node is in neither the formatting - category nor the phrasing category, then this is a - parse error. Stop this algorithm. The end tag token - is ignored. */ - return false; - } - } - } - break; - } - break; - } - } - - private function inTable($token) { - $clear = array('html', 'table'); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "caption" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'caption') { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - - /* Insert an HTML element for the token, then switch the - insertion mode to "in caption". */ - $this->insertElement($token); - $this->mode = self::IN_CAPTION; - - /* A start tag whose tag name is "colgroup" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'colgroup') { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the - insertion mode to "in column group". */ - $this->insertElement($token); - $this->mode = self::IN_CGROUP; - - /* A start tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'col') { - $this->inTable(array( - 'name' => 'colgroup', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - $this->inColumnGroup($token); - - /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('tbody', 'tfoot', 'thead'))) { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in table body". */ - $this->insertElement($token); - $this->mode = self::IN_TBODY; - - /* A start tag whose tag name is one of: "td", "th", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && - in_array($token['name'], array('td', 'th', 'tr'))) { - /* Act as if a start tag token with the tag name "tbody" had been - seen, then reprocess the current token. */ - $this->inTable(array( - 'name' => 'tbody', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inTableBody($token); - - /* A start tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'table') { - /* Parse error. Act as if an end tag token with the tag name "table" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inTable(array( - 'name' => 'table', - 'type' => HTML5::ENDTAG - )); - - return $this->mainPhase($token); - - /* An end tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - return false; - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a table element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a table element has been - popped from the stack. */ - while(true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if($current === 'table') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', - 'tfoot', 'th', 'thead', 'tr'))) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Parse error. Process the token as if the insertion mode was "in - body", with the following exception: */ - - /* If the current node is a table, tbody, tfoot, thead, or tr - element, then, whenever a node would be inserted into the current - node, it must instead be inserted into the foster parent element. */ - if(in_array(end($this->stack)->nodeName, - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* The foster parent element is the parent element of the last - table element in the stack of open elements, if there is a - table element and it has such a parent element. If there is no - table element in the stack of open elements (innerHTML case), - then the foster parent element is the first element in the - stack of open elements (the html element). Otherwise, if there - is a table element in the stack of open elements, but the last - table element in the stack of open elements has no parent, or - its parent node is not an element, then the foster parent - element is the element before the last table element in the - stack of open elements. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === 'table') { - $table = $this->stack[$n]; - break; - } - } - - if(isset($table) && $table->parentNode !== null) { - $this->foster_parent = $table->parentNode; - - } elseif(!isset($table)) { - $this->foster_parent = $this->stack[0]; - - } elseif(isset($table) && ($table->parentNode === null || - $table->parentNode->nodeType !== XML_ELEMENT_NODE)) { - $this->foster_parent = $this->stack[$n - 1]; - } - } - - $this->inBody($token); - } - } - - private function inCaption($token) { - /* An end tag whose tag name is "caption" */ - if($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a caption element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a caption element has - been popped from the stack. */ - while(true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if($node === 'caption') { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag - name is "table" */ - } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) || ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table')) { - /* Parse error. Act as if an end tag with the tag name "caption" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inCaption(array( - 'name' => 'caption', - 'type' => HTML5::ENDTAG - )); - - return $this->inTable($token); - - /* An end tag whose tag name is one of: "body", "col", "colgroup", - "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', - 'thead', 'tr'))) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inColumnGroup($token) { - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') { - /* Insert a col element for the token. Immediately pop the current - node off the stack of open elements. */ - $this->insertElement($token); - array_pop($this->stack); - - /* An end tag whose tag name is "colgroup" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'colgroup') { - /* If the current node is the root html element, then this is a - parse error, ignore the token. (innerHTML case) */ - if(end($this->stack)->nodeName === 'html') { - // Ignore - - /* Otherwise, pop the current node (which will be a colgroup - element) from the stack of open elements. Switch the insertion - mode to "in table". */ - } else { - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* An end tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Act as if an end tag with the tag name "colgroup" had been seen, - and then, if that token wasn't ignored, reprocess the current token. */ - $this->inColumnGroup(array( - 'name' => 'colgroup', - 'type' => HTML5::ENDTAG - )); - - return $this->inTable($token); - } - } - - private function inTableBody($token) { - $clear = array('tbody', 'tfoot', 'thead', 'html'); - - /* A start tag whose tag name is "tr" */ - if($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Insert a tr element for the token, then switch the insertion - mode to "in row". */ - $this->insertElement($token); - $this->mode = self::IN_ROW; - - /* A start tag whose tag name is one of: "th", "td" */ - } elseif($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td')) { - /* Parse error. Act as if a start tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inTableBody(array( - 'name' => 'tr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inRow($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node from the stack of open elements. Switch - the insertion mode to "in table". */ - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */ - } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead'))) || - ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')) { - /* If the stack of open elements does not have a tbody, thead, or - tfoot element in table scope, this is a parse error. Ignore the - token. (innerHTML case) */ - if(!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Act as if an end tag with the same tag name as the current - node ("tbody", "tfoot", or "thead") had been seen, then - reprocess the current token. */ - $this->inTableBody(array( - 'name' => end($this->stack)->nodeName, - 'type' => HTML5::ENDTAG - )); - - return $this->mainPhase($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inRow($token) { - $clear = array('tr', 'html'); - - /* A start tag whose tag name is one of: "th", "td" */ - if($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td')) { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in cell". */ - $this->insertElement($token); - $this->mode = self::IN_CELL; - - /* Insert a marker at the end of the list of active formatting - elements. */ - $this->a_formatting[] = self::MARKER; - - /* An end tag whose tag name is "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node (which will be a tr element) from the - stack of open elements. Switch the insertion mode to "in table - body". */ - array_pop($this->stack); - $this->mode = self::IN_TBODY; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* Act as if an end tag with the tag name "tr" had been seen, then, - if that token wasn't ignored, reprocess the current token. */ - $this->inRow(array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - )); - - return $this->inCell($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Otherwise, act as if an end tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inRow(array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - )); - - return $this->inCell($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inCell($token) { - /* An end tag whose tag name is one of: "td", "th" */ - if($token['type'] === HTML5::ENDTAG && - ($token['name'] === 'td' || $token['name'] === 'th')) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token, then this is a - parse error and the token must be ignored. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Generate implied end tags, except for elements with the same - tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); - - /* Now, if the current node is not an element with the same tag - name as the token, then this is a parse error. */ - // k - - /* Pop elements from this stack until an element with the same - tag name as the token has been popped from the stack. */ - while(true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if($node === $token['name']) { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in row". (The current node - will be a tr element at this point.) */ - $this->mode = self::IN_ROW; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if(!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if(!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html'))) { - /* Parse error. Ignore the token. */ - - /* An end tag whose tag name is one of: "table", "tbody", "tfoot", - "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token (which can only - happen for "tbody", "tfoot" and "thead", or, in the innerHTML case), - then this is a parse error and the token must be ignored. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inSelect($token) { - /* Handle the token as follows: */ - - /* A character token */ - if($token['type'] === HTML5::CHARACTR) { - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token whose tag name is "option" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'option') { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if(end($this->stack)->nodeName === 'option') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* A start tag token whose tag name is "optgroup" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'optgroup') { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if(end($this->stack)->nodeName === 'option') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* If the current node is an optgroup element, act as if an end tag - with the tag name "optgroup" had been seen. */ - if(end($this->stack)->nodeName === 'optgroup') { - $this->inSelect(array( - 'name' => 'optgroup', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* An end tag token whose tag name is "optgroup" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'optgroup') { - /* First, if the current node is an option element, and the node - immediately before it in the stack of open elements is an optgroup - element, then act as if an end tag with the tag name "option" had - been seen. */ - $elements_in_stack = count($this->stack); - - if($this->stack[$elements_in_stack - 1]->nodeName === 'option' && - $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* If the current node is an optgroup element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if($this->stack[$elements_in_stack - 1] === 'optgroup') { - array_pop($this->stack); - } - - /* An end tag token whose tag name is "option" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'option') { - /* If the current node is an option element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if(end($this->stack)->nodeName === 'option') { - array_pop($this->stack); - } - - /* An end tag whose tag name is "select" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'select') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // w/e - - /* Otherwise: */ - } else { - /* Pop elements from the stack of open elements until a select - element has been popped from the stack. */ - while(true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if($current === 'select') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* A start tag whose tag name is "select" */ - } elseif($token['name'] === 'select' && - $token['type'] === HTML5::STARTTAG) { - /* Parse error. Act as if the token had been an end tag with the - tag name "select" instead. */ - $this->inSelect(array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - )); - - /* An end tag whose tag name is one of: "caption", "table", "tbody", - "tfoot", "thead", "tr", "td", "th" */ - } elseif(in_array($token['name'], array('caption', 'table', 'tbody', - 'tfoot', 'thead', 'tr', 'td', 'th')) && $token['type'] === HTML5::ENDTAG) { - /* Parse error. */ - // w/e - - /* If the stack of open elements has an element in table scope with - the same tag name as that of the token, then act as if an end tag - with the tag name "select" had been seen, and reprocess the token. - Otherwise, ignore the token. */ - if($this->elementInScope($token['name'], true)) { - $this->inSelect(array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - )); - - $this->mainPhase($token); - } - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterBody($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Process the token as it would be processed if the insertion mode - was "in body". */ - $this->inBody($token); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the first element in the stack of open - elements (the html element), with the data attribute set to the - data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->stack[0]->appendChild($comment); - - /* An end tag with the tag name "html" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') { - /* If the parser was originally created in order to handle the - setting of an element's innerHTML attribute, this is a parse error; - ignore the token. (The element will be an html element in this - case.) (innerHTML case) */ - - /* Otherwise, switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* Anything else */ - } else { - /* Parse error. Set the insertion mode to "in body" and reprocess - the token. */ - $this->mode = self::IN_BODY; - return $this->inBody($token); - } - } - - private function inFrameset($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag with the tag name "frameset" */ - } elseif($token['name'] === 'frameset' && - $token['type'] === HTML5::STARTTAG) { - $this->insertElement($token); - - /* An end tag with the tag name "frameset" */ - } elseif($token['name'] === 'frameset' && - $token['type'] === HTML5::ENDTAG) { - /* If the current node is the root html element, then this is a - parse error; ignore the token. (innerHTML case) */ - if(end($this->stack)->nodeName === 'html') { - // Ignore - - } else { - /* Otherwise, pop the current node from the stack of open - elements. */ - array_pop($this->stack); - - /* If the parser was not originally created in order to handle - the setting of an element's innerHTML attribute (innerHTML case), - and the current node is no longer a frameset element, then change - the insertion mode to "after frameset". */ - $this->mode = self::AFTR_FRAME; - } - - /* A start tag with the tag name "frame" */ - } elseif($token['name'] === 'frame' && - $token['type'] === HTML5::STARTTAG) { - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - - /* A start tag with the tag name "noframes" */ - } elseif($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterFrameset($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* An end tag with the tag name "html" */ - } elseif($token['name'] === 'html' && - $token['type'] === HTML5::ENDTAG) { - /* Switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* A start tag with the tag name "noframes" */ - } elseif($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function trailingEndPhase($token) { - /* After the main phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Process the token as it would be processed in the main phase. */ - $this->mainPhase($token); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or a start tag token. Or an end tag token. */ - } elseif(($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG) { - /* Parse error. Switch back to the main phase and reprocess the - token. */ - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - - /* An end-of-file token */ - } elseif($token['type'] === HTML5::EOF) { - /* OMG DONE!! */ - } - } - - private function insertElement($token, $append = true, $check = false) { - // Proprietary workaround for libxml2's limitations with tag names - if ($check) { - // Slightly modified HTML5 tag-name modification, - // removing anything that's not an ASCII letter, digit, or hyphen - $token['name'] = preg_replace('/[^a-z0-9-]/i', '', $token['name']); - // Remove leading hyphens and numbers - $token['name'] = ltrim($token['name'], '-0..9'); - // In theory, this should ever be needed, but just in case - if ($token['name'] === '') $token['name'] = 'span'; // arbitrary generic choice - } - - $el = $this->dom->createElement($token['name']); - - foreach($token['attr'] as $attr) { - if(!$el->hasAttribute($attr['name'])) { - $el->setAttribute($attr['name'], $attr['value']); - } - } - - $this->appendToRealParent($el); - $this->stack[] = $el; - - return $el; - } - - private function insertText($data) { - $text = $this->dom->createTextNode($data); - $this->appendToRealParent($text); - } - - private function insertComment($data) { - $comment = $this->dom->createComment($data); - $this->appendToRealParent($comment); - } - - private function appendToRealParent($node) { - if($this->foster_parent === null) { - end($this->stack)->appendChild($node); - - } elseif($this->foster_parent !== null) { - /* If the foster parent element is the parent element of the - last table element in the stack of open elements, then the new - node must be inserted immediately before the last table element - in the stack of open elements in the foster parent element; - otherwise, the new node must be appended to the foster parent - element. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === 'table' && - $this->stack[$n]->parentNode !== null) { - $table = $this->stack[$n]; - break; - } - } - - if(isset($table) && $this->foster_parent->isSameNode($table->parentNode)) - $this->foster_parent->insertBefore($node, $table); - else - $this->foster_parent->appendChild($node); - - $this->foster_parent = null; - } - } - - private function elementInScope($el, $table = false) { - if(is_array($el)) { - foreach($el as $element) { - if($this->elementInScope($element, $table)) { - return true; - } - } - - return false; - } - - $leng = count($this->stack); - - for($n = 0; $n < $leng; $n++) { - /* 1. Initialise node to be the current node (the bottommost node of - the stack). */ - $node = $this->stack[$leng - 1 - $n]; - - if($node->tagName === $el) { - /* 2. If node is the target node, terminate in a match state. */ - return true; - - } elseif($node->tagName === 'table') { - /* 3. Otherwise, if node is a table element, terminate in a failure - state. */ - return false; - - } elseif($table === true && in_array($node->tagName, array('caption', 'td', - 'th', 'button', 'marquee', 'object'))) { - /* 4. Otherwise, if the algorithm is the "has an element in scope" - variant (rather than the "has an element in table scope" variant), - and node is one of the following, terminate in a failure state. */ - return false; - - } elseif($node === $node->ownerDocument->documentElement) { - /* 5. Otherwise, if node is an html element (root element), terminate - in a failure state. (This can only happen if the node is the topmost - node of the stack of open elements, and prevents the next step from - being invoked if there are no more elements in the stack.) */ - return false; - } - - /* Otherwise, set node to the previous entry in the stack of open - elements and return to step 2. (This will never fail, since the loop - will always terminate in the previous step if the top of the stack - is reached.) */ - } - } - - private function reconstructActiveFormattingElements() { - /* 1. If there are no entries in the list of active formatting elements, - then there is nothing to reconstruct; stop this algorithm. */ - $formatting_elements = count($this->a_formatting); - - if($formatting_elements === 0) { - return false; - } - - /* 3. Let entry be the last (most recently added) element in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. If the last (most recently added) entry in the list of active - formatting elements is a marker, or if it is an element that is in the - stack of open elements, then there is nothing to reconstruct; stop this - algorithm. */ - if($entry === self::MARKER || in_array($entry, $this->stack, true)) { - return false; - } - - for($a = $formatting_elements - 1; $a >= 0; true) { - /* 4. If there are no entries before entry in the list of active - formatting elements, then jump to step 8. */ - if($a === 0) { - $step_seven = false; - break; - } - - /* 5. Let entry be the entry one earlier than entry in the list of - active formatting elements. */ - $a--; - $entry = $this->a_formatting[$a]; - - /* 6. If entry is neither a marker nor an element that is also in - thetack of open elements, go to step 4. */ - if($entry === self::MARKER || in_array($entry, $this->stack, true)) { - break; - } - } - - while(true) { - /* 7. Let entry be the element one later than entry in the list of - active formatting elements. */ - if(isset($step_seven) && $step_seven === true) { - $a++; - $entry = $this->a_formatting[$a]; - } - - /* 8. Perform a shallow clone of the element entry to obtain clone. */ - $clone = $entry->cloneNode(); - - /* 9. Append clone to the current node and push it onto the stack - of open elements so that it is the new current node. */ - end($this->stack)->appendChild($clone); - $this->stack[] = $clone; - - /* 10. Replace the entry for entry in the list with an entry for - clone. */ - $this->a_formatting[$a] = $clone; - - /* 11. If the entry for clone in the list of active formatting - elements is not the last entry in the list, return to step 7. */ - if(end($this->a_formatting) !== $clone) { - $step_seven = true; - } else { - break; - } - } - } - - private function clearTheActiveFormattingElementsUpToTheLastMarker() { - /* When the steps below require the UA to clear the list of active - formatting elements up to the last marker, the UA must perform the - following steps: */ - - while(true) { - /* 1. Let entry be the last (most recently added) entry in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. Remove entry from the list of active formatting elements. */ - array_pop($this->a_formatting); - - /* 3. If entry was a marker, then stop the algorithm at this point. - The list has been cleared up to the last marker. */ - if($entry === self::MARKER) { - break; - } - } - } - - private function generateImpliedEndTags($exclude = array()) { - /* When the steps below require the UA to generate implied end tags, - then, if the current node is a dd element, a dt element, an li element, - a p element, a td element, a th element, or a tr element, the UA must - act as if an end tag with the respective tag name had been seen and - then generate implied end tags again. */ - $node = end($this->stack); - $elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude); - - while(in_array(end($this->stack)->nodeName, $elements)) { - array_pop($this->stack); - } - } - - private function getElementCategory($node) { - $name = $node->tagName; - if(in_array($name, $this->special)) - return self::SPECIAL; - - elseif(in_array($name, $this->scoping)) - return self::SCOPING; - - elseif(in_array($name, $this->formatting)) - return self::FORMATTING; - - else - return self::PHRASING; - } - - private function clearStackToTableContext($elements) { - /* When the steps above require the UA to clear the stack back to a - table context, it means that the UA must, while the current node is not - a table element or an html element, pop elements from the stack of open - elements. If this causes any elements to be popped from the stack, then - this is a parse error. */ - while(true) { - $node = end($this->stack)->nodeName; - - if(in_array($node, $elements)) { - break; - } else { - array_pop($this->stack); - } - } - } - - private function resetInsertionMode() { - /* 1. Let last be false. */ - $last = false; - $leng = count($this->stack); - - for($n = $leng - 1; $n >= 0; $n--) { - /* 2. Let node be the last node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 3. If node is the first node in the stack of open elements, then - set last to true. If the element whose innerHTML attribute is being - set is neither a td element nor a th element, then set node to the - element whose innerHTML attribute is being set. (innerHTML case) */ - if($this->stack[0]->isSameNode($node)) { - $last = true; - } - - /* 4. If node is a select element, then switch the insertion mode to - "in select" and abort these steps. (innerHTML case) */ - if($node->nodeName === 'select') { - $this->mode = self::IN_SELECT; - break; - - /* 5. If node is a td or th element, then switch the insertion mode - to "in cell" and abort these steps. */ - } elseif($node->nodeName === 'td' || $node->nodeName === 'th') { - $this->mode = self::IN_CELL; - break; - - /* 6. If node is a tr element, then switch the insertion mode to - "in row" and abort these steps. */ - } elseif($node->nodeName === 'tr') { - $this->mode = self::IN_ROW; - break; - - /* 7. If node is a tbody, thead, or tfoot element, then switch the - insertion mode to "in table body" and abort these steps. */ - } elseif(in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) { - $this->mode = self::IN_TBODY; - break; - - /* 8. If node is a caption element, then switch the insertion mode - to "in caption" and abort these steps. */ - } elseif($node->nodeName === 'caption') { - $this->mode = self::IN_CAPTION; - break; - - /* 9. If node is a colgroup element, then switch the insertion mode - to "in column group" and abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'colgroup') { - $this->mode = self::IN_CGROUP; - break; - - /* 10. If node is a table element, then switch the insertion mode - to "in table" and abort these steps. */ - } elseif($node->nodeName === 'table') { - $this->mode = self::IN_TABLE; - break; - - /* 11. If node is a head element, then switch the insertion mode - to "in body" ("in body"! not "in head"!) and abort these steps. - (innerHTML case) */ - } elseif($node->nodeName === 'head') { - $this->mode = self::IN_BODY; - break; - - /* 12. If node is a body element, then switch the insertion mode to - "in body" and abort these steps. */ - } elseif($node->nodeName === 'body') { - $this->mode = self::IN_BODY; - break; - - /* 13. If node is a frameset element, then switch the insertion - mode to "in frameset" and abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'frameset') { - $this->mode = self::IN_FRAME; - break; - - /* 14. If node is an html element, then: if the head element - pointer is null, switch the insertion mode to "before head", - otherwise, switch the insertion mode to "after head". In either - case, abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'html') { - $this->mode = ($this->head_pointer === null) - ? self::BEFOR_HEAD - : self::AFTER_HEAD; - - break; - - /* 15. If last is true, then set the insertion mode to "in body" - and abort these steps. (innerHTML case) */ - } elseif($last) { - $this->mode = self::IN_BODY; - break; - } - } - } - - private function closeCell() { - /* If the stack of open elements has a td or th element in table scope, - then act as if an end tag token with that tag name had been seen. */ - foreach(array('td', 'th') as $cell) { - if($this->elementInScope($cell, true)) { - $this->inCell(array( - 'name' => $cell, - 'type' => HTML5::ENDTAG - )); - - break; - } - } - } - - public function save() { - return $this->dom; - } -} -?> diff --git a/web/framework-1.1.17/.htaccess b/web/framework/.htaccess similarity index 100% rename from web/framework-1.1.17/.htaccess rename to web/framework/.htaccess diff --git a/web/framework-1.1.17/YiiBase.php b/web/framework/YiiBase.php similarity index 99% rename from web/framework-1.1.17/YiiBase.php rename to web/framework/YiiBase.php index 289b7f9..f406cff 100644 --- a/web/framework-1.1.17/YiiBase.php +++ b/web/framework/YiiBase.php @@ -80,7 +80,7 @@ class YiiBase */ public static function getVersion() { - return '1.1.17'; + return '1.1.18'; } /** @@ -179,6 +179,7 @@ class YiiBase */ public static function createComponent($config) { + $args = func_get_args(); if(is_string($config)) { $type=$config; @@ -197,7 +198,6 @@ class YiiBase if(($n=func_num_args())>1) { - $args=func_get_args(); if($n===2) $object=new $type($args[1]); elseif($n===3) diff --git a/web/framework-1.1.17/base/CApplication.php b/web/framework/base/CApplication.php similarity index 99% rename from web/framework-1.1.17/base/CApplication.php rename to web/framework/base/CApplication.php index 8c44e27..5d891bd 100644 --- a/web/framework-1.1.17/base/CApplication.php +++ b/web/framework/base/CApplication.php @@ -133,7 +133,7 @@ abstract class CApplication extends CModule { Yii::setApplication($this); - // set basePath at early as possible to avoid trouble + // set basePath as early as possible to avoid trouble if(is_string($config)) $config=require($config); if(isset($config['basePath'])) @@ -400,7 +400,7 @@ abstract class CApplication extends CModule /** * Returns the locale instance. * @param string $localeID the locale ID (e.g. en_US). If null, the {@link getLanguage application language ID} will be used. - * @return an instance of CLocale + * @return CLocale an instance of CLocale */ public function getLocale($localeID=null) { @@ -572,7 +572,7 @@ abstract class CApplication extends CModule public function createAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&') { $url=$this->createUrl($route,$params,$ampersand); - if(strpos($url,'http')===0) + if(strpos($url,'http')===0 || strpos($url,'//')===0) return $url; else return $this->getRequest()->getHostInfo($schema).$url; diff --git a/web/framework-1.1.17/base/CApplicationComponent.php b/web/framework/base/CApplicationComponent.php similarity index 100% rename from web/framework-1.1.17/base/CApplicationComponent.php rename to web/framework/base/CApplicationComponent.php diff --git a/web/framework-1.1.17/base/CBehavior.php b/web/framework/base/CBehavior.php similarity index 100% rename from web/framework-1.1.17/base/CBehavior.php rename to web/framework/base/CBehavior.php diff --git a/web/framework-1.1.17/base/CComponent.php b/web/framework/base/CComponent.php similarity index 99% rename from web/framework-1.1.17/base/CComponent.php rename to web/framework/base/CComponent.php index 13d81f5..ed6901f 100644 --- a/web/framework-1.1.17/base/CComponent.php +++ b/web/framework/base/CComponent.php @@ -609,7 +609,14 @@ class CComponent if(is_string($_expression_)) { extract($_data_); - return eval('return '.$_expression_.';'); + try + { + return eval('return ' . $_expression_ . ';'); + } + catch (ParseError $e) + { + return false; + } } else { diff --git a/web/framework-1.1.17/base/CDbStatePersister.php b/web/framework/base/CDbStatePersister.php similarity index 100% rename from web/framework-1.1.17/base/CDbStatePersister.php rename to web/framework/base/CDbStatePersister.php diff --git a/web/framework-1.1.17/base/CErrorEvent.php b/web/framework/base/CErrorEvent.php similarity index 100% rename from web/framework-1.1.17/base/CErrorEvent.php rename to web/framework/base/CErrorEvent.php diff --git a/web/framework-1.1.17/base/CErrorHandler.php b/web/framework/base/CErrorHandler.php similarity index 100% rename from web/framework-1.1.17/base/CErrorHandler.php rename to web/framework/base/CErrorHandler.php diff --git a/web/framework-1.1.17/base/CException.php b/web/framework/base/CException.php similarity index 100% rename from web/framework-1.1.17/base/CException.php rename to web/framework/base/CException.php diff --git a/web/framework-1.1.17/base/CExceptionEvent.php b/web/framework/base/CExceptionEvent.php similarity index 100% rename from web/framework-1.1.17/base/CExceptionEvent.php rename to web/framework/base/CExceptionEvent.php diff --git a/web/framework-1.1.17/base/CHttpException.php b/web/framework/base/CHttpException.php similarity index 100% rename from web/framework-1.1.17/base/CHttpException.php rename to web/framework/base/CHttpException.php diff --git a/web/framework-1.1.17/base/CModel.php b/web/framework/base/CModel.php similarity index 100% rename from web/framework-1.1.17/base/CModel.php rename to web/framework/base/CModel.php diff --git a/web/framework-1.1.17/base/CModelBehavior.php b/web/framework/base/CModelBehavior.php similarity index 100% rename from web/framework-1.1.17/base/CModelBehavior.php rename to web/framework/base/CModelBehavior.php diff --git a/web/framework-1.1.17/base/CModelEvent.php b/web/framework/base/CModelEvent.php similarity index 100% rename from web/framework-1.1.17/base/CModelEvent.php rename to web/framework/base/CModelEvent.php diff --git a/web/framework-1.1.17/base/CModule.php b/web/framework/base/CModule.php similarity index 99% rename from web/framework-1.1.17/base/CModule.php rename to web/framework/base/CModule.php index b81b2bd..57f2725 100644 --- a/web/framework-1.1.17/base/CModule.php +++ b/web/framework/base/CModule.php @@ -71,7 +71,7 @@ abstract class CModule extends CComponent $this->_id=$id; $this->_parentModule=$parent; - // set basePath at early as possible to avoid trouble + // set basePath as early as possible to avoid trouble if(is_string($config)) $config=require($config); if(isset($config['basePath'])) diff --git a/web/framework-1.1.17/base/CSecurityManager.php b/web/framework/base/CSecurityManager.php similarity index 95% rename from web/framework-1.1.17/base/CSecurityManager.php rename to web/framework/base/CSecurityManager.php index 6f339c6..9832498 100644 --- a/web/framework-1.1.17/base/CSecurityManager.php +++ b/web/framework/base/CSecurityManager.php @@ -614,4 +614,35 @@ class CSecurityManager extends CApplicationComponent $diff|=(ord($actual[$i])^ord($expected[$i%$expectedLength])); return $diff===0; } + + /** + * Masks a token to make it uncompressible. + * Applies a random mask to the token and prepends the mask used to the result making the string always unique. + * Used to mitigate BREACH attack by randomizing how token is outputted on each request. + * @param string $token An unmasked token. + * @return string A masked token. + * @since 1.1.18 + */ + public function maskToken($token) + { + // The number of bytes in a mask is always equal to the number of bytes in a token. + $mask=$this->generateRandomString($this->strlen($token)); + return strtr(base64_encode($mask.($mask^$token)),'+/','-_'); + } + + /** + * Unmasks a token previously masked by `maskToken`. + * @param string $maskedToken A masked token. + * @return string An unmasked token, or an empty string in case of token format is invalid. + * @since 1.1.18 + */ + public function unmaskToken($maskedToken) + { + $decoded=base64_decode(strtr($maskedToken,'-_','+/')); + $length=$this->strlen($decoded)/2; + // Check if the masked token has an even length. + if(!is_int($length)) + return ''; + return $this->substr($decoded,$length,$length)^$this->substr($decoded,0,$length); + } } diff --git a/web/framework-1.1.17/base/CStatePersister.php b/web/framework/base/CStatePersister.php similarity index 98% rename from web/framework-1.1.17/base/CStatePersister.php rename to web/framework/base/CStatePersister.php index 86e3d9d..75b56f0 100644 --- a/web/framework-1.1.17/base/CStatePersister.php +++ b/web/framework/base/CStatePersister.php @@ -105,7 +105,8 @@ class CStatePersister extends CApplicationComponent implements IStatePersister * Loads content from file using a shared lock to avoid data corruption when reading * the file while it is being written by save() * - * @return string file contents + * @param string $filename file name + * @return bool|string file contents * @since 1.1.17 */ protected function getContent($filename) diff --git a/web/framework-1.1.17/base/interfaces.php b/web/framework/base/interfaces.php similarity index 100% rename from web/framework-1.1.17/base/interfaces.php rename to web/framework/base/interfaces.php diff --git a/web/framework-1.1.17/caching/CApcCache.php b/web/framework/caching/CApcCache.php similarity index 100% rename from web/framework-1.1.17/caching/CApcCache.php rename to web/framework/caching/CApcCache.php diff --git a/web/framework-1.1.17/caching/CCache.php b/web/framework/caching/CCache.php similarity index 100% rename from web/framework-1.1.17/caching/CCache.php rename to web/framework/caching/CCache.php diff --git a/web/framework-1.1.17/caching/CDbCache.php b/web/framework/caching/CDbCache.php similarity index 100% rename from web/framework-1.1.17/caching/CDbCache.php rename to web/framework/caching/CDbCache.php diff --git a/web/framework-1.1.17/caching/CDummyCache.php b/web/framework/caching/CDummyCache.php similarity index 100% rename from web/framework-1.1.17/caching/CDummyCache.php rename to web/framework/caching/CDummyCache.php diff --git a/web/framework-1.1.17/caching/CEAcceleratorCache.php b/web/framework/caching/CEAcceleratorCache.php similarity index 100% rename from web/framework-1.1.17/caching/CEAcceleratorCache.php rename to web/framework/caching/CEAcceleratorCache.php diff --git a/web/framework-1.1.17/caching/CFileCache.php b/web/framework/caching/CFileCache.php similarity index 99% rename from web/framework-1.1.17/caching/CFileCache.php rename to web/framework/caching/CFileCache.php index 330e74d..6ecff48 100644 --- a/web/framework-1.1.17/caching/CFileCache.php +++ b/web/framework/caching/CFileCache.php @@ -130,7 +130,7 @@ class CFileCache extends CCache { $cacheFile=$this->getCacheFile($key); if(($time=$this->filemtime($cacheFile))>time()) - return @file_get_contents($cacheFile,false,null,$this->embedExpiry ? 10 : -1); + return @file_get_contents($cacheFile,false,null,$this->embedExpiry ? 10 : null); elseif($time>0) @unlink($cacheFile); return false; diff --git a/web/framework-1.1.17/caching/CMemCache.php b/web/framework/caching/CMemCache.php similarity index 100% rename from web/framework-1.1.17/caching/CMemCache.php rename to web/framework/caching/CMemCache.php diff --git a/web/framework-1.1.17/caching/CRedisCache.php b/web/framework/caching/CRedisCache.php similarity index 99% rename from web/framework-1.1.17/caching/CRedisCache.php rename to web/framework/caching/CRedisCache.php index 3d19b84..c122bff 100644 --- a/web/framework-1.1.17/caching/CRedisCache.php +++ b/web/framework/caching/CRedisCache.php @@ -95,7 +95,10 @@ class CRedisCache extends CCache $this->executeCommand('SELECT',array($this->database)); } else + { + $this->_socket = null; throw new CException('Failed to connect to redis: '.$errorDescription,(int)$errorNumber); + } } /** diff --git a/web/framework-1.1.17/caching/CWinCache.php b/web/framework/caching/CWinCache.php similarity index 100% rename from web/framework-1.1.17/caching/CWinCache.php rename to web/framework/caching/CWinCache.php diff --git a/web/framework-1.1.17/caching/CXCache.php b/web/framework/caching/CXCache.php similarity index 100% rename from web/framework-1.1.17/caching/CXCache.php rename to web/framework/caching/CXCache.php diff --git a/web/framework-1.1.17/caching/CZendDataCache.php b/web/framework/caching/CZendDataCache.php similarity index 100% rename from web/framework-1.1.17/caching/CZendDataCache.php rename to web/framework/caching/CZendDataCache.php diff --git a/web/framework-1.1.17/caching/dependencies/CCacheDependency.php b/web/framework/caching/dependencies/CCacheDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CCacheDependency.php rename to web/framework/caching/dependencies/CCacheDependency.php diff --git a/web/framework-1.1.17/caching/dependencies/CChainedCacheDependency.php b/web/framework/caching/dependencies/CChainedCacheDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CChainedCacheDependency.php rename to web/framework/caching/dependencies/CChainedCacheDependency.php diff --git a/web/framework-1.1.17/caching/dependencies/CDbCacheDependency.php b/web/framework/caching/dependencies/CDbCacheDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CDbCacheDependency.php rename to web/framework/caching/dependencies/CDbCacheDependency.php diff --git a/web/framework-1.1.17/caching/dependencies/CDirectoryCacheDependency.php b/web/framework/caching/dependencies/CDirectoryCacheDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CDirectoryCacheDependency.php rename to web/framework/caching/dependencies/CDirectoryCacheDependency.php diff --git a/web/framework-1.1.17/caching/dependencies/CExpressionDependency.php b/web/framework/caching/dependencies/CExpressionDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CExpressionDependency.php rename to web/framework/caching/dependencies/CExpressionDependency.php diff --git a/web/framework-1.1.17/caching/dependencies/CFileCacheDependency.php b/web/framework/caching/dependencies/CFileCacheDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CFileCacheDependency.php rename to web/framework/caching/dependencies/CFileCacheDependency.php diff --git a/web/framework-1.1.17/caching/dependencies/CGlobalStateCacheDependency.php b/web/framework/caching/dependencies/CGlobalStateCacheDependency.php similarity index 100% rename from web/framework-1.1.17/caching/dependencies/CGlobalStateCacheDependency.php rename to web/framework/caching/dependencies/CGlobalStateCacheDependency.php diff --git a/web/framework-1.1.17/cli/commands/MessageCommand.php b/web/framework/cli/commands/MessageCommand.php similarity index 97% rename from web/framework-1.1.17/cli/commands/MessageCommand.php rename to web/framework/cli/commands/MessageCommand.php index d1e0e2c..00d3b74 100644 --- a/web/framework-1.1.17/cli/commands/MessageCommand.php +++ b/web/framework/cli/commands/MessageCommand.php @@ -147,7 +147,15 @@ EOD; else $category=substr($matches[$i][1],1,-1); $message=$matches[$i][2]; - $messages[$category][]=eval("return $message;"); // use eval to eliminate quote escape + try + { + $evalResult = eval("return $message;"); // use eval to eliminate quote escape + } + catch (ParseError $e) + { + $evalResult = false; + } + $messages[$category][] = $evalResult; } } return $messages; diff --git a/web/framework-1.1.17/cli/commands/MigrateCommand.php b/web/framework/cli/commands/MigrateCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/MigrateCommand.php rename to web/framework/cli/commands/MigrateCommand.php diff --git a/web/framework-1.1.17/cli/commands/ShellCommand.php b/web/framework/cli/commands/ShellCommand.php similarity index 96% rename from web/framework-1.1.17/cli/commands/ShellCommand.php rename to web/framework/cli/commands/ShellCommand.php index 5855f26..06aa82b 100644 --- a/web/framework-1.1.17/cli/commands/ShellCommand.php +++ b/web/framework/cli/commands/ShellCommand.php @@ -125,7 +125,18 @@ EOD; $_command_->run($_args_); } else - echo eval($_line_.';'); + { + try + { + $evalResult = eval($_line_ . ';'); + } + catch (ParseError $e) + { + $evalResult = false; + } + + echo $evalResult; + } } catch(Exception $e) { diff --git a/web/framework-1.1.17/cli/commands/WebAppCommand.php b/web/framework/cli/commands/WebAppCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/WebAppCommand.php rename to web/framework/cli/commands/WebAppCommand.php diff --git a/web/framework-1.1.17/cli/commands/shell/ControllerCommand.php b/web/framework/cli/commands/shell/ControllerCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/shell/ControllerCommand.php rename to web/framework/cli/commands/shell/ControllerCommand.php diff --git a/web/framework-1.1.17/cli/commands/shell/CrudCommand.php b/web/framework/cli/commands/shell/CrudCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/shell/CrudCommand.php rename to web/framework/cli/commands/shell/CrudCommand.php diff --git a/web/framework-1.1.17/cli/commands/shell/FormCommand.php b/web/framework/cli/commands/shell/FormCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/shell/FormCommand.php rename to web/framework/cli/commands/shell/FormCommand.php diff --git a/web/framework-1.1.17/cli/commands/shell/HelpCommand.php b/web/framework/cli/commands/shell/HelpCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/shell/HelpCommand.php rename to web/framework/cli/commands/shell/HelpCommand.php diff --git a/web/framework-1.1.17/cli/commands/shell/ModelCommand.php b/web/framework/cli/commands/shell/ModelCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/shell/ModelCommand.php rename to web/framework/cli/commands/shell/ModelCommand.php diff --git a/web/framework-1.1.17/cli/commands/shell/ModuleCommand.php b/web/framework/cli/commands/shell/ModuleCommand.php similarity index 100% rename from web/framework-1.1.17/cli/commands/shell/ModuleCommand.php rename to web/framework/cli/commands/shell/ModuleCommand.php diff --git a/web/framework-1.1.17/cli/views/shell/controller/controller.php b/web/framework/cli/views/shell/controller/controller.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/controller/controller.php rename to web/framework/cli/views/shell/controller/controller.php diff --git a/web/framework-1.1.17/cli/views/shell/controller/view.php b/web/framework/cli/views/shell/controller/view.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/controller/view.php rename to web/framework/cli/views/shell/controller/view.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/_form.php b/web/framework/cli/views/shell/crud/_form.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/_form.php rename to web/framework/cli/views/shell/crud/_form.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/_search.php b/web/framework/cli/views/shell/crud/_search.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/_search.php rename to web/framework/cli/views/shell/crud/_search.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/_view.php b/web/framework/cli/views/shell/crud/_view.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/_view.php rename to web/framework/cli/views/shell/crud/_view.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/admin.php b/web/framework/cli/views/shell/crud/admin.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/admin.php rename to web/framework/cli/views/shell/crud/admin.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/controller.php b/web/framework/cli/views/shell/crud/controller.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/controller.php rename to web/framework/cli/views/shell/crud/controller.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/create.php b/web/framework/cli/views/shell/crud/create.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/create.php rename to web/framework/cli/views/shell/crud/create.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/index.php b/web/framework/cli/views/shell/crud/index.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/index.php rename to web/framework/cli/views/shell/crud/index.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/test.php b/web/framework/cli/views/shell/crud/test.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/test.php rename to web/framework/cli/views/shell/crud/test.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/update.php b/web/framework/cli/views/shell/crud/update.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/update.php rename to web/framework/cli/views/shell/crud/update.php diff --git a/web/framework-1.1.17/cli/views/shell/crud/view.php b/web/framework/cli/views/shell/crud/view.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/crud/view.php rename to web/framework/cli/views/shell/crud/view.php diff --git a/web/framework-1.1.17/cli/views/shell/form/action.php b/web/framework/cli/views/shell/form/action.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/form/action.php rename to web/framework/cli/views/shell/form/action.php diff --git a/web/framework-1.1.17/cli/views/shell/form/form.php b/web/framework/cli/views/shell/form/form.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/form/form.php rename to web/framework/cli/views/shell/form/form.php diff --git a/web/framework-1.1.17/cli/views/shell/model/fixture.php b/web/framework/cli/views/shell/model/fixture.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/model/fixture.php rename to web/framework/cli/views/shell/model/fixture.php diff --git a/web/framework-1.1.17/cli/views/shell/model/model.php b/web/framework/cli/views/shell/model/model.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/model/model.php rename to web/framework/cli/views/shell/model/model.php diff --git a/web/framework-1.1.17/cli/views/shell/model/test.php b/web/framework/cli/views/shell/model/test.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/model/test.php rename to web/framework/cli/views/shell/model/test.php diff --git a/web/framework-1.1.17/cli/views/shell/module/controllers/DefaultController.php b/web/framework/cli/views/shell/module/controllers/DefaultController.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/module/controllers/DefaultController.php rename to web/framework/cli/views/shell/module/controllers/DefaultController.php diff --git a/web/framework-1.1.17/cli/views/shell/module/module.php b/web/framework/cli/views/shell/module/module.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/module/module.php rename to web/framework/cli/views/shell/module/module.php diff --git a/web/framework-1.1.17/cli/views/shell/module/views/default/index.php b/web/framework/cli/views/shell/module/views/default/index.php similarity index 100% rename from web/framework-1.1.17/cli/views/shell/module/views/default/index.php rename to web/framework/cli/views/shell/module/views/default/index.php diff --git a/web/framework-1.1.17/cli/views/webapp/assets/git-gitignore b/web/framework/cli/views/webapp/assets/git-gitignore similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/assets/git-gitignore rename to web/framework/cli/views/webapp/assets/git-gitignore diff --git a/web/framework-1.1.17/cli/views/webapp/assets/hg-hgkeep b/web/framework/cli/views/webapp/assets/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/assets/hg-hgkeep rename to web/framework/cli/views/webapp/assets/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/css/bg.gif b/web/framework/cli/views/webapp/css/bg.gif similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/css/bg.gif rename to web/framework/cli/views/webapp/css/bg.gif diff --git a/web/framework-1.1.17/cli/views/webapp/css/form.css b/web/framework/cli/views/webapp/css/form.css similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/css/form.css rename to web/framework/cli/views/webapp/css/form.css diff --git a/web/framework-1.1.17/cli/views/webapp/css/ie.css b/web/framework/cli/views/webapp/css/ie.css similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/css/ie.css rename to web/framework/cli/views/webapp/css/ie.css diff --git a/web/framework-1.1.17/cli/views/webapp/css/main.css b/web/framework/cli/views/webapp/css/main.css similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/css/main.css rename to web/framework/cli/views/webapp/css/main.css diff --git a/web/framework-1.1.17/cli/views/webapp/css/print.css b/web/framework/cli/views/webapp/css/print.css similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/css/print.css rename to web/framework/cli/views/webapp/css/print.css diff --git a/web/framework-1.1.17/cli/views/webapp/css/screen.css b/web/framework/cli/views/webapp/css/screen.css similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/css/screen.css rename to web/framework/cli/views/webapp/css/screen.css diff --git a/web/framework-1.1.17/cli/views/webapp/hg-hgignore b/web/framework/cli/views/webapp/hg-hgignore similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/hg-hgignore rename to web/framework/cli/views/webapp/hg-hgignore diff --git a/web/framework-1.1.17/cli/views/webapp/images/git-gitkeep b/web/framework/cli/views/webapp/images/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/images/git-gitkeep rename to web/framework/cli/views/webapp/images/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/images/hg-hgkeep b/web/framework/cli/views/webapp/images/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/images/hg-hgkeep rename to web/framework/cli/views/webapp/images/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/index-test.php b/web/framework/cli/views/webapp/index-test.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/index-test.php rename to web/framework/cli/views/webapp/index-test.php diff --git a/web/framework-1.1.17/cli/views/webapp/index.php b/web/framework/cli/views/webapp/index.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/index.php rename to web/framework/cli/views/webapp/index.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/.htaccess b/web/framework/cli/views/webapp/protected/.htaccess similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/.htaccess rename to web/framework/cli/views/webapp/protected/.htaccess diff --git a/web/framework-1.1.17/cli/views/webapp/protected/commands/shell/git-gitkeep b/web/framework/cli/views/webapp/protected/commands/shell/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/commands/shell/git-gitkeep rename to web/framework/cli/views/webapp/protected/commands/shell/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/commands/shell/hg-hgkeep b/web/framework/cli/views/webapp/protected/commands/shell/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/commands/shell/hg-hgkeep rename to web/framework/cli/views/webapp/protected/commands/shell/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/components/Controller.php b/web/framework/cli/views/webapp/protected/components/Controller.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/components/Controller.php rename to web/framework/cli/views/webapp/protected/components/Controller.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/components/UserIdentity.php b/web/framework/cli/views/webapp/protected/components/UserIdentity.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/components/UserIdentity.php rename to web/framework/cli/views/webapp/protected/components/UserIdentity.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/config/console.php b/web/framework/cli/views/webapp/protected/config/console.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/config/console.php rename to web/framework/cli/views/webapp/protected/config/console.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/config/database.php b/web/framework/cli/views/webapp/protected/config/database.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/config/database.php rename to web/framework/cli/views/webapp/protected/config/database.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/config/main.php b/web/framework/cli/views/webapp/protected/config/main.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/config/main.php rename to web/framework/cli/views/webapp/protected/config/main.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/config/test.php b/web/framework/cli/views/webapp/protected/config/test.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/config/test.php rename to web/framework/cli/views/webapp/protected/config/test.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/controllers/SiteController.php b/web/framework/cli/views/webapp/protected/controllers/SiteController.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/controllers/SiteController.php rename to web/framework/cli/views/webapp/protected/controllers/SiteController.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/data/schema.mysql.sql b/web/framework/cli/views/webapp/protected/data/schema.mysql.sql similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/data/schema.mysql.sql rename to web/framework/cli/views/webapp/protected/data/schema.mysql.sql diff --git a/web/framework-1.1.17/cli/views/webapp/protected/data/schema.sqlite.sql b/web/framework/cli/views/webapp/protected/data/schema.sqlite.sql similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/data/schema.sqlite.sql rename to web/framework/cli/views/webapp/protected/data/schema.sqlite.sql diff --git a/web/framework-1.1.17/cli/views/webapp/protected/data/testdrive.db b/web/framework/cli/views/webapp/protected/data/testdrive.db similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/data/testdrive.db rename to web/framework/cli/views/webapp/protected/data/testdrive.db diff --git a/web/framework-1.1.17/cli/views/webapp/protected/extensions/git-gitkeep b/web/framework/cli/views/webapp/protected/extensions/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/extensions/git-gitkeep rename to web/framework/cli/views/webapp/protected/extensions/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/extensions/hg-hgkeep b/web/framework/cli/views/webapp/protected/extensions/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/extensions/hg-hgkeep rename to web/framework/cli/views/webapp/protected/extensions/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/messages/git-gitkeep b/web/framework/cli/views/webapp/protected/messages/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/messages/git-gitkeep rename to web/framework/cli/views/webapp/protected/messages/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/messages/hg-hgkeep b/web/framework/cli/views/webapp/protected/messages/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/messages/hg-hgkeep rename to web/framework/cli/views/webapp/protected/messages/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/migrations/git-gitkeep b/web/framework/cli/views/webapp/protected/migrations/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/migrations/git-gitkeep rename to web/framework/cli/views/webapp/protected/migrations/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/migrations/hg-hgkeep b/web/framework/cli/views/webapp/protected/migrations/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/migrations/hg-hgkeep rename to web/framework/cli/views/webapp/protected/migrations/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/models/ContactForm.php b/web/framework/cli/views/webapp/protected/models/ContactForm.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/models/ContactForm.php rename to web/framework/cli/views/webapp/protected/models/ContactForm.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/models/LoginForm.php b/web/framework/cli/views/webapp/protected/models/LoginForm.php similarity index 91% rename from web/framework-1.1.17/cli/views/webapp/protected/models/LoginForm.php rename to web/framework/cli/views/webapp/protected/models/LoginForm.php index eb36e4a..632c475 100644 --- a/web/framework-1.1.17/cli/views/webapp/protected/models/LoginForm.php +++ b/web/framework/cli/views/webapp/protected/models/LoginForm.php @@ -43,6 +43,8 @@ class LoginForm extends CFormModel /** * Authenticates the password. * This is the 'authenticate' validator as declared in rules(). + * @param string $attribute the name of the attribute to be validated. + * @param array $params additional parameters passed with rule when being executed. */ public function authenticate($attribute,$params) { diff --git a/web/framework-1.1.17/cli/views/webapp/protected/runtime/git-gitignore b/web/framework/cli/views/webapp/protected/runtime/git-gitignore similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/runtime/git-gitignore rename to web/framework/cli/views/webapp/protected/runtime/git-gitignore diff --git a/web/framework-1.1.17/cli/views/webapp/protected/runtime/hg-hgkeep b/web/framework/cli/views/webapp/protected/runtime/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/runtime/hg-hgkeep rename to web/framework/cli/views/webapp/protected/runtime/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/WebTestCase.php b/web/framework/cli/views/webapp/protected/tests/WebTestCase.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/WebTestCase.php rename to web/framework/cli/views/webapp/protected/tests/WebTestCase.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/bootstrap.php b/web/framework/cli/views/webapp/protected/tests/bootstrap.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/bootstrap.php rename to web/framework/cli/views/webapp/protected/tests/bootstrap.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/fixtures/git-gitkeep b/web/framework/cli/views/webapp/protected/tests/fixtures/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/fixtures/git-gitkeep rename to web/framework/cli/views/webapp/protected/tests/fixtures/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/fixtures/hg-hgkeep b/web/framework/cli/views/webapp/protected/tests/fixtures/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/fixtures/hg-hgkeep rename to web/framework/cli/views/webapp/protected/tests/fixtures/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/functional/SiteTest.php b/web/framework/cli/views/webapp/protected/tests/functional/SiteTest.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/functional/SiteTest.php rename to web/framework/cli/views/webapp/protected/tests/functional/SiteTest.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/phpunit.xml b/web/framework/cli/views/webapp/protected/tests/phpunit.xml similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/phpunit.xml rename to web/framework/cli/views/webapp/protected/tests/phpunit.xml diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/report/git-gitignore b/web/framework/cli/views/webapp/protected/tests/report/git-gitignore similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/report/git-gitignore rename to web/framework/cli/views/webapp/protected/tests/report/git-gitignore diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/report/hg-hgkeep b/web/framework/cli/views/webapp/protected/tests/report/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/report/hg-hgkeep rename to web/framework/cli/views/webapp/protected/tests/report/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/unit/git-gitkeep b/web/framework/cli/views/webapp/protected/tests/unit/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/unit/git-gitkeep rename to web/framework/cli/views/webapp/protected/tests/unit/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/tests/unit/hg-hgkeep b/web/framework/cli/views/webapp/protected/tests/unit/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/tests/unit/hg-hgkeep rename to web/framework/cli/views/webapp/protected/tests/unit/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/vendor/git-gitkeep b/web/framework/cli/views/webapp/protected/vendor/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/vendor/git-gitkeep rename to web/framework/cli/views/webapp/protected/vendor/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/vendor/hg-hgkeep b/web/framework/cli/views/webapp/protected/vendor/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/vendor/hg-hgkeep rename to web/framework/cli/views/webapp/protected/vendor/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/layouts/column1.php b/web/framework/cli/views/webapp/protected/views/layouts/column1.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/layouts/column1.php rename to web/framework/cli/views/webapp/protected/views/layouts/column1.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/layouts/column2.php b/web/framework/cli/views/webapp/protected/views/layouts/column2.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/layouts/column2.php rename to web/framework/cli/views/webapp/protected/views/layouts/column2.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/layouts/main.php b/web/framework/cli/views/webapp/protected/views/layouts/main.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/layouts/main.php rename to web/framework/cli/views/webapp/protected/views/layouts/main.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/site/contact.php b/web/framework/cli/views/webapp/protected/views/site/contact.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/site/contact.php rename to web/framework/cli/views/webapp/protected/views/site/contact.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/site/error.php b/web/framework/cli/views/webapp/protected/views/site/error.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/site/error.php rename to web/framework/cli/views/webapp/protected/views/site/error.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/site/index.php b/web/framework/cli/views/webapp/protected/views/site/index.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/site/index.php rename to web/framework/cli/views/webapp/protected/views/site/index.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/site/login.php b/web/framework/cli/views/webapp/protected/views/site/login.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/site/login.php rename to web/framework/cli/views/webapp/protected/views/site/login.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/views/site/pages/about.php b/web/framework/cli/views/webapp/protected/views/site/pages/about.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/views/site/pages/about.php rename to web/framework/cli/views/webapp/protected/views/site/pages/about.php diff --git a/web/framework-1.1.17/cli/views/webapp/protected/yiic b/web/framework/cli/views/webapp/protected/yiic similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/yiic rename to web/framework/cli/views/webapp/protected/yiic diff --git a/web/framework-1.1.17/cli/views/webapp/protected/yiic.bat b/web/framework/cli/views/webapp/protected/yiic.bat similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/yiic.bat rename to web/framework/cli/views/webapp/protected/yiic.bat diff --git a/web/framework-1.1.17/cli/views/webapp/protected/yiic.php b/web/framework/cli/views/webapp/protected/yiic.php similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/protected/yiic.php rename to web/framework/cli/views/webapp/protected/yiic.php diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/.htaccess b/web/framework/cli/views/webapp/themes/classic/views/.htaccess similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/.htaccess rename to web/framework/cli/views/webapp/themes/classic/views/.htaccess diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/layouts/git-gitkeep b/web/framework/cli/views/webapp/themes/classic/views/layouts/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/layouts/git-gitkeep rename to web/framework/cli/views/webapp/themes/classic/views/layouts/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/layouts/hg-hgkeep b/web/framework/cli/views/webapp/themes/classic/views/layouts/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/layouts/hg-hgkeep rename to web/framework/cli/views/webapp/themes/classic/views/layouts/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/site/git-gitkeep b/web/framework/cli/views/webapp/themes/classic/views/site/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/site/git-gitkeep rename to web/framework/cli/views/webapp/themes/classic/views/site/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/site/hg-hgkeep b/web/framework/cli/views/webapp/themes/classic/views/site/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/site/hg-hgkeep rename to web/framework/cli/views/webapp/themes/classic/views/site/hg-hgkeep diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/system/git-gitkeep b/web/framework/cli/views/webapp/themes/classic/views/system/git-gitkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/system/git-gitkeep rename to web/framework/cli/views/webapp/themes/classic/views/system/git-gitkeep diff --git a/web/framework-1.1.17/cli/views/webapp/themes/classic/views/system/hg-hgkeep b/web/framework/cli/views/webapp/themes/classic/views/system/hg-hgkeep similarity index 100% rename from web/framework-1.1.17/cli/views/webapp/themes/classic/views/system/hg-hgkeep rename to web/framework/cli/views/webapp/themes/classic/views/system/hg-hgkeep diff --git a/web/framework-1.1.17/collections/CAttributeCollection.php b/web/framework/collections/CAttributeCollection.php similarity index 100% rename from web/framework-1.1.17/collections/CAttributeCollection.php rename to web/framework/collections/CAttributeCollection.php diff --git a/web/framework-1.1.17/collections/CConfiguration.php b/web/framework/collections/CConfiguration.php similarity index 100% rename from web/framework-1.1.17/collections/CConfiguration.php rename to web/framework/collections/CConfiguration.php diff --git a/web/framework-1.1.17/collections/CList.php b/web/framework/collections/CList.php similarity index 100% rename from web/framework-1.1.17/collections/CList.php rename to web/framework/collections/CList.php diff --git a/web/framework-1.1.17/collections/CListIterator.php b/web/framework/collections/CListIterator.php similarity index 100% rename from web/framework-1.1.17/collections/CListIterator.php rename to web/framework/collections/CListIterator.php diff --git a/web/framework-1.1.17/collections/CMap.php b/web/framework/collections/CMap.php similarity index 100% rename from web/framework-1.1.17/collections/CMap.php rename to web/framework/collections/CMap.php diff --git a/web/framework-1.1.17/collections/CMapIterator.php b/web/framework/collections/CMapIterator.php similarity index 100% rename from web/framework-1.1.17/collections/CMapIterator.php rename to web/framework/collections/CMapIterator.php diff --git a/web/framework-1.1.17/collections/CQueue.php b/web/framework/collections/CQueue.php similarity index 100% rename from web/framework-1.1.17/collections/CQueue.php rename to web/framework/collections/CQueue.php diff --git a/web/framework-1.1.17/collections/CQueueIterator.php b/web/framework/collections/CQueueIterator.php similarity index 100% rename from web/framework-1.1.17/collections/CQueueIterator.php rename to web/framework/collections/CQueueIterator.php diff --git a/web/framework-1.1.17/collections/CStack.php b/web/framework/collections/CStack.php similarity index 100% rename from web/framework-1.1.17/collections/CStack.php rename to web/framework/collections/CStack.php diff --git a/web/framework-1.1.17/collections/CStackIterator.php b/web/framework/collections/CStackIterator.php similarity index 100% rename from web/framework-1.1.17/collections/CStackIterator.php rename to web/framework/collections/CStackIterator.php diff --git a/web/framework-1.1.17/collections/CTypedList.php b/web/framework/collections/CTypedList.php similarity index 100% rename from web/framework-1.1.17/collections/CTypedList.php rename to web/framework/collections/CTypedList.php diff --git a/web/framework-1.1.17/collections/CTypedMap.php b/web/framework/collections/CTypedMap.php similarity index 100% rename from web/framework-1.1.17/collections/CTypedMap.php rename to web/framework/collections/CTypedMap.php diff --git a/web/framework-1.1.17/console/CConsoleApplication.php b/web/framework/console/CConsoleApplication.php similarity index 100% rename from web/framework-1.1.17/console/CConsoleApplication.php rename to web/framework/console/CConsoleApplication.php diff --git a/web/framework-1.1.17/console/CConsoleCommand.php b/web/framework/console/CConsoleCommand.php similarity index 100% rename from web/framework-1.1.17/console/CConsoleCommand.php rename to web/framework/console/CConsoleCommand.php diff --git a/web/framework-1.1.17/console/CConsoleCommandBehavior.php b/web/framework/console/CConsoleCommandBehavior.php similarity index 100% rename from web/framework-1.1.17/console/CConsoleCommandBehavior.php rename to web/framework/console/CConsoleCommandBehavior.php diff --git a/web/framework-1.1.17/console/CConsoleCommandEvent.php b/web/framework/console/CConsoleCommandEvent.php similarity index 100% rename from web/framework-1.1.17/console/CConsoleCommandEvent.php rename to web/framework/console/CConsoleCommandEvent.php diff --git a/web/framework-1.1.17/console/CConsoleCommandRunner.php b/web/framework/console/CConsoleCommandRunner.php similarity index 100% rename from web/framework-1.1.17/console/CConsoleCommandRunner.php rename to web/framework/console/CConsoleCommandRunner.php diff --git a/web/framework-1.1.17/console/CHelpCommand.php b/web/framework/console/CHelpCommand.php similarity index 100% rename from web/framework-1.1.17/console/CHelpCommand.php rename to web/framework/console/CHelpCommand.php diff --git a/web/framework-1.1.17/db/CDbCommand.php b/web/framework/db/CDbCommand.php similarity index 100% rename from web/framework-1.1.17/db/CDbCommand.php rename to web/framework/db/CDbCommand.php diff --git a/web/framework-1.1.17/db/CDbConnection.php b/web/framework/db/CDbConnection.php similarity index 97% rename from web/framework-1.1.17/db/CDbConnection.php rename to web/framework/db/CDbConnection.php index 3fd88d8..0de6080 100644 --- a/web/framework-1.1.17/db/CDbConnection.php +++ b/web/framework/db/CDbConnection.php @@ -582,6 +582,26 @@ class CDbConnection extends CApplicationComponent return "'" . addcslashes(str_replace("'", "''", $str), "\000\n\r\\\032") . "'"; } + /** + * Quotes a value for use in a query using a given type. + * @param mixed $value the value to be quoted. + * @param integer $type The type to be used for quoting. + * This should be one of the `PDO::PARAM_*` constants described in + * {@link http://www.php.net/manual/en/pdo.constants.php PDO documentation}. + * This parameter will be passed to the `PDO::quote()` function. + * @return string the properly quoted string. + * @see http://www.php.net/manual/en/function.PDO-quote.php + * @since 1.1.18 + */ + public function quoteValueWithType($value, $type) + { + $this->setActive(true); + if(($quoted=$this->_pdo->quote($value, $type))!==false) + return $quoted; + else // the driver doesn't support quote (e.g. oci) + return "'" . addcslashes(str_replace("'", "''", $value), "\000\n\r\\\032") . "'"; + } + /** * Quotes a table name for use in a query. * If the table name contains schema prefix, the prefix will also be properly quoted. diff --git a/web/framework-1.1.17/db/CDbDataReader.php b/web/framework/db/CDbDataReader.php similarity index 100% rename from web/framework-1.1.17/db/CDbDataReader.php rename to web/framework/db/CDbDataReader.php diff --git a/web/framework-1.1.17/db/CDbException.php b/web/framework/db/CDbException.php similarity index 100% rename from web/framework-1.1.17/db/CDbException.php rename to web/framework/db/CDbException.php diff --git a/web/framework-1.1.17/db/CDbMigration.php b/web/framework/db/CDbMigration.php similarity index 100% rename from web/framework-1.1.17/db/CDbMigration.php rename to web/framework/db/CDbMigration.php diff --git a/web/framework-1.1.17/db/CDbTransaction.php b/web/framework/db/CDbTransaction.php similarity index 100% rename from web/framework-1.1.17/db/CDbTransaction.php rename to web/framework/db/CDbTransaction.php diff --git a/web/framework-1.1.17/db/ar/CActiveFinder.php b/web/framework/db/ar/CActiveFinder.php similarity index 99% rename from web/framework-1.1.17/db/ar/CActiveFinder.php rename to web/framework/db/ar/CActiveFinder.php index 36eb86c..4af164c 100644 --- a/web/framework-1.1.17/db/ar/CActiveFinder.php +++ b/web/framework/db/ar/CActiveFinder.php @@ -194,6 +194,7 @@ class CActiveFinder extends CComponent * @param CJoinElement $parent the parent tree node * @param mixed $with the names of the related objects relative to the parent tree node * @param array $options additional query options to be merged with the relation + * @return CJoinElement|mixed * @throws CDbException if given parent tree node is an instance of {@link CStatElement} * or relation is not defined in the given parent's tree node model class */ diff --git a/web/framework-1.1.17/db/ar/CActiveRecord.php b/web/framework/db/ar/CActiveRecord.php similarity index 99% rename from web/framework-1.1.17/db/ar/CActiveRecord.php rename to web/framework/db/ar/CActiveRecord.php index 0619ee2..5f1d1d6 100644 --- a/web/framework-1.1.17/db/ar/CActiveRecord.php +++ b/web/framework/db/ar/CActiveRecord.php @@ -150,6 +150,7 @@ abstract class CActiveRecord extends CModel * This method is overridden so that AR attributes can be accessed like properties. * @param string $name property name * @param mixed $value property value + * @throws CException */ public function __set($name,$value) { @@ -188,6 +189,7 @@ abstract class CActiveRecord extends CModel * This method overrides the parent implementation by clearing * the specified attribute value. * @param string $name the property name or the event name + * @throws CException */ public function __unset($name) { @@ -812,9 +814,10 @@ abstract class CActiveRecord extends CModel } /** - * Returns if the current record is new. + * Returns if the current record is new (was never saved to database) * @return boolean whether the record is new and should be inserted when calling {@link save}. - * This property is automatically set in constructor and {@link populateRecord}. + * This property is automatically set in constructor and {@link populateRecord} and is set + * to false right after inserting record to database. * Defaults to false, but it will be set to true if the instance is created using * the new operator. */ diff --git a/web/framework-1.1.17/db/ar/CActiveRecordBehavior.php b/web/framework/db/ar/CActiveRecordBehavior.php similarity index 100% rename from web/framework-1.1.17/db/ar/CActiveRecordBehavior.php rename to web/framework/db/ar/CActiveRecordBehavior.php diff --git a/web/framework-1.1.17/db/schema/CDbColumnSchema.php b/web/framework/db/schema/CDbColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/CDbColumnSchema.php rename to web/framework/db/schema/CDbColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/CDbCommandBuilder.php b/web/framework/db/schema/CDbCommandBuilder.php similarity index 100% rename from web/framework-1.1.17/db/schema/CDbCommandBuilder.php rename to web/framework/db/schema/CDbCommandBuilder.php diff --git a/web/framework-1.1.17/db/schema/CDbCriteria.php b/web/framework/db/schema/CDbCriteria.php similarity index 100% rename from web/framework-1.1.17/db/schema/CDbCriteria.php rename to web/framework/db/schema/CDbCriteria.php diff --git a/web/framework-1.1.17/db/schema/CDbExpression.php b/web/framework/db/schema/CDbExpression.php similarity index 100% rename from web/framework-1.1.17/db/schema/CDbExpression.php rename to web/framework/db/schema/CDbExpression.php diff --git a/web/framework-1.1.17/db/schema/CDbSchema.php b/web/framework/db/schema/CDbSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/CDbSchema.php rename to web/framework/db/schema/CDbSchema.php diff --git a/web/framework-1.1.17/db/schema/CDbTableSchema.php b/web/framework/db/schema/CDbTableSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/CDbTableSchema.php rename to web/framework/db/schema/CDbTableSchema.php diff --git a/web/framework-1.1.17/db/schema/cubrid/CCubridColumnSchema.php b/web/framework/db/schema/cubrid/CCubridColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/cubrid/CCubridColumnSchema.php rename to web/framework/db/schema/cubrid/CCubridColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/cubrid/CCubridSchema.php b/web/framework/db/schema/cubrid/CCubridSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/cubrid/CCubridSchema.php rename to web/framework/db/schema/cubrid/CCubridSchema.php diff --git a/web/framework-1.1.17/db/schema/cubrid/CCubridTableSchema.php b/web/framework/db/schema/cubrid/CCubridTableSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/cubrid/CCubridTableSchema.php rename to web/framework/db/schema/cubrid/CCubridTableSchema.php diff --git a/web/framework-1.1.17/db/schema/mssql/CMssqlColumnSchema.php b/web/framework/db/schema/mssql/CMssqlColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/mssql/CMssqlColumnSchema.php rename to web/framework/db/schema/mssql/CMssqlColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/mssql/CMssqlCommandBuilder.php b/web/framework/db/schema/mssql/CMssqlCommandBuilder.php similarity index 100% rename from web/framework-1.1.17/db/schema/mssql/CMssqlCommandBuilder.php rename to web/framework/db/schema/mssql/CMssqlCommandBuilder.php diff --git a/web/framework-1.1.17/db/schema/mssql/CMssqlPdoAdapter.php b/web/framework/db/schema/mssql/CMssqlPdoAdapter.php similarity index 100% rename from web/framework-1.1.17/db/schema/mssql/CMssqlPdoAdapter.php rename to web/framework/db/schema/mssql/CMssqlPdoAdapter.php diff --git a/web/framework-1.1.17/db/schema/mssql/CMssqlSchema.php b/web/framework/db/schema/mssql/CMssqlSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/mssql/CMssqlSchema.php rename to web/framework/db/schema/mssql/CMssqlSchema.php diff --git a/web/framework-1.1.17/db/schema/mssql/CMssqlSqlsrvPdoAdapter.php b/web/framework/db/schema/mssql/CMssqlSqlsrvPdoAdapter.php similarity index 100% rename from web/framework-1.1.17/db/schema/mssql/CMssqlSqlsrvPdoAdapter.php rename to web/framework/db/schema/mssql/CMssqlSqlsrvPdoAdapter.php diff --git a/web/framework-1.1.17/db/schema/mssql/CMssqlTableSchema.php b/web/framework/db/schema/mssql/CMssqlTableSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/mssql/CMssqlTableSchema.php rename to web/framework/db/schema/mssql/CMssqlTableSchema.php diff --git a/web/framework-1.1.17/db/schema/mysql/CMysqlColumnSchema.php b/web/framework/db/schema/mysql/CMysqlColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/mysql/CMysqlColumnSchema.php rename to web/framework/db/schema/mysql/CMysqlColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/mysql/CMysqlCommandBuilder.php b/web/framework/db/schema/mysql/CMysqlCommandBuilder.php similarity index 100% rename from web/framework-1.1.17/db/schema/mysql/CMysqlCommandBuilder.php rename to web/framework/db/schema/mysql/CMysqlCommandBuilder.php diff --git a/web/framework-1.1.17/db/schema/mysql/CMysqlSchema.php b/web/framework/db/schema/mysql/CMysqlSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/mysql/CMysqlSchema.php rename to web/framework/db/schema/mysql/CMysqlSchema.php diff --git a/web/framework-1.1.17/db/schema/mysql/CMysqlTableSchema.php b/web/framework/db/schema/mysql/CMysqlTableSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/mysql/CMysqlTableSchema.php rename to web/framework/db/schema/mysql/CMysqlTableSchema.php diff --git a/web/framework-1.1.17/db/schema/oci/COciColumnSchema.php b/web/framework/db/schema/oci/COciColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/oci/COciColumnSchema.php rename to web/framework/db/schema/oci/COciColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/oci/COciCommandBuilder.php b/web/framework/db/schema/oci/COciCommandBuilder.php similarity index 100% rename from web/framework-1.1.17/db/schema/oci/COciCommandBuilder.php rename to web/framework/db/schema/oci/COciCommandBuilder.php diff --git a/web/framework-1.1.17/db/schema/oci/COciSchema.php b/web/framework/db/schema/oci/COciSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/oci/COciSchema.php rename to web/framework/db/schema/oci/COciSchema.php diff --git a/web/framework-1.1.17/db/schema/oci/COciTableSchema.php b/web/framework/db/schema/oci/COciTableSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/oci/COciTableSchema.php rename to web/framework/db/schema/oci/COciTableSchema.php diff --git a/web/framework-1.1.17/db/schema/pgsql/CPgsqlColumnSchema.php b/web/framework/db/schema/pgsql/CPgsqlColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/pgsql/CPgsqlColumnSchema.php rename to web/framework/db/schema/pgsql/CPgsqlColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/pgsql/CPgsqlCommandBuilder.php b/web/framework/db/schema/pgsql/CPgsqlCommandBuilder.php similarity index 100% rename from web/framework-1.1.17/db/schema/pgsql/CPgsqlCommandBuilder.php rename to web/framework/db/schema/pgsql/CPgsqlCommandBuilder.php diff --git a/web/framework-1.1.17/db/schema/pgsql/CPgsqlSchema.php b/web/framework/db/schema/pgsql/CPgsqlSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/pgsql/CPgsqlSchema.php rename to web/framework/db/schema/pgsql/CPgsqlSchema.php diff --git a/web/framework-1.1.17/db/schema/pgsql/CPgsqlTableSchema.php b/web/framework/db/schema/pgsql/CPgsqlTableSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/pgsql/CPgsqlTableSchema.php rename to web/framework/db/schema/pgsql/CPgsqlTableSchema.php diff --git a/web/framework-1.1.17/db/schema/sqlite/CSqliteColumnSchema.php b/web/framework/db/schema/sqlite/CSqliteColumnSchema.php similarity index 100% rename from web/framework-1.1.17/db/schema/sqlite/CSqliteColumnSchema.php rename to web/framework/db/schema/sqlite/CSqliteColumnSchema.php diff --git a/web/framework-1.1.17/db/schema/sqlite/CSqliteCommandBuilder.php b/web/framework/db/schema/sqlite/CSqliteCommandBuilder.php similarity index 100% rename from web/framework-1.1.17/db/schema/sqlite/CSqliteCommandBuilder.php rename to web/framework/db/schema/sqlite/CSqliteCommandBuilder.php diff --git a/web/framework-1.1.17/db/schema/sqlite/CSqliteSchema.php b/web/framework/db/schema/sqlite/CSqliteSchema.php similarity index 98% rename from web/framework-1.1.17/db/schema/sqlite/CSqliteSchema.php rename to web/framework/db/schema/sqlite/CSqliteSchema.php index bdf31be..b6294b1 100644 --- a/web/framework-1.1.17/db/schema/sqlite/CSqliteSchema.php +++ b/web/framework/db/schema/sqlite/CSqliteSchema.php @@ -225,6 +225,7 @@ class CSqliteSchema extends CDbSchema * @param string $column the name of the column to be dropped. The name will be properly quoted by the method. * @return string the SQL statement for dropping a DB column. * @since 1.1.6 + * @throws CDbException */ public function dropColumn($table, $column) { @@ -239,6 +240,7 @@ class CSqliteSchema extends CDbSchema * @param string $newName the new name of the column. The name will be properly quoted by the method. * @return string the SQL statement for renaming a DB column. * @since 1.1.6 + * @throws CDbException */ public function renameColumn($table, $name, $newName) { @@ -257,6 +259,7 @@ class CSqliteSchema extends CDbSchema * @param string $update the ON UPDATE option. Most DBMS support these options: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL * @return string the SQL statement for adding a foreign key constraint to an existing table. * @since 1.1.6 + * @throws CDbException */ public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete=null, $update=null) { @@ -270,6 +273,7 @@ class CSqliteSchema extends CDbSchema * @param string $table the table whose foreign is to be dropped. The name will be properly quoted by the method. * @return string the SQL statement for dropping a foreign key constraint. * @since 1.1.6 + * @throws CDbException */ public function dropForeignKey($name, $table) { @@ -286,6 +290,7 @@ class CSqliteSchema extends CDbSchema * For example, 'string' will be turned into 'varchar(255)', while 'string not null' will become 'varchar(255) not null'. * @return string the SQL statement for changing the definition of a column. * @since 1.1.6 + * @throws CDbException */ public function alterColumn($table, $column, $type) { @@ -312,6 +317,7 @@ class CSqliteSchema extends CDbSchema * @param string|array $columns comma separated string or array of columns that the primary key will consist of. * @return string the SQL statement for adding a primary key constraint to an existing table. * @since 1.1.13 + * @throws CDbException */ public function addPrimaryKey($name,$table,$columns) { @@ -326,6 +332,7 @@ class CSqliteSchema extends CDbSchema * @param string $table the table that the primary key constraint will be removed from. * @return string the SQL statement for removing a primary key constraint from an existing table. * @since 1.1.13 + * @throws CDbException */ public function dropPrimaryKey($name,$table) { diff --git a/web/framework-1.1.17/gii/CCodeFile.php b/web/framework/gii/CCodeFile.php similarity index 100% rename from web/framework-1.1.17/gii/CCodeFile.php rename to web/framework/gii/CCodeFile.php diff --git a/web/framework-1.1.17/gii/CCodeForm.php b/web/framework/gii/CCodeForm.php similarity index 100% rename from web/framework-1.1.17/gii/CCodeForm.php rename to web/framework/gii/CCodeForm.php diff --git a/web/framework-1.1.17/gii/CCodeGenerator.php b/web/framework/gii/CCodeGenerator.php similarity index 100% rename from web/framework-1.1.17/gii/CCodeGenerator.php rename to web/framework/gii/CCodeGenerator.php diff --git a/web/framework-1.1.17/gii/CCodeModel.php b/web/framework/gii/CCodeModel.php similarity index 100% rename from web/framework-1.1.17/gii/CCodeModel.php rename to web/framework/gii/CCodeModel.php diff --git a/web/framework-1.1.17/gii/GiiModule.php b/web/framework/gii/GiiModule.php similarity index 100% rename from web/framework-1.1.17/gii/GiiModule.php rename to web/framework/gii/GiiModule.php diff --git a/web/framework-1.1.17/gii/assets/css/ie.css b/web/framework/gii/assets/css/ie.css similarity index 100% rename from web/framework-1.1.17/gii/assets/css/ie.css rename to web/framework/gii/assets/css/ie.css diff --git a/web/framework-1.1.17/gii/assets/css/main.css b/web/framework/gii/assets/css/main.css similarity index 100% rename from web/framework-1.1.17/gii/assets/css/main.css rename to web/framework/gii/assets/css/main.css diff --git a/web/framework-1.1.17/gii/assets/css/print.css b/web/framework/gii/assets/css/print.css similarity index 100% rename from web/framework-1.1.17/gii/assets/css/print.css rename to web/framework/gii/assets/css/print.css diff --git a/web/framework-1.1.17/gii/assets/css/screen.css b/web/framework/gii/assets/css/screen.css similarity index 100% rename from web/framework-1.1.17/gii/assets/css/screen.css rename to web/framework/gii/assets/css/screen.css diff --git a/web/framework-1.1.17/gii/assets/images/logo.png b/web/framework/gii/assets/images/logo.png similarity index 100% rename from web/framework-1.1.17/gii/assets/images/logo.png rename to web/framework/gii/assets/images/logo.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/blank.gif b/web/framework/gii/assets/js/fancybox/blank.gif similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/blank.gif rename to web/framework/gii/assets/js/fancybox/blank.gif diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_close.png b/web/framework/gii/assets/js/fancybox/fancy_close.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_close.png rename to web/framework/gii/assets/js/fancybox/fancy_close.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_loading.png b/web/framework/gii/assets/js/fancybox/fancy_loading.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_loading.png rename to web/framework/gii/assets/js/fancybox/fancy_loading.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_nav_left.png b/web/framework/gii/assets/js/fancybox/fancy_nav_left.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_nav_left.png rename to web/framework/gii/assets/js/fancybox/fancy_nav_left.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_nav_right.png b/web/framework/gii/assets/js/fancybox/fancy_nav_right.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_nav_right.png rename to web/framework/gii/assets/js/fancybox/fancy_nav_right.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_e.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_e.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_e.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_e.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_n.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_n.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_n.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_n.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_ne.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_ne.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_ne.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_ne.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_nw.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_nw.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_nw.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_nw.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_s.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_s.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_s.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_s.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_se.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_se.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_se.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_se.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_sw.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_sw.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_sw.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_sw.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_w.png b/web/framework/gii/assets/js/fancybox/fancy_shadow_w.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_shadow_w.png rename to web/framework/gii/assets/js/fancybox/fancy_shadow_w.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_left.png b/web/framework/gii/assets/js/fancybox/fancy_title_left.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_left.png rename to web/framework/gii/assets/js/fancybox/fancy_title_left.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_main.png b/web/framework/gii/assets/js/fancybox/fancy_title_main.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_main.png rename to web/framework/gii/assets/js/fancybox/fancy_title_main.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_over.png b/web/framework/gii/assets/js/fancybox/fancy_title_over.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_over.png rename to web/framework/gii/assets/js/fancybox/fancy_title_over.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_right.png b/web/framework/gii/assets/js/fancybox/fancy_title_right.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancy_title_right.png rename to web/framework/gii/assets/js/fancybox/fancy_title_right.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancybox-x.png b/web/framework/gii/assets/js/fancybox/fancybox-x.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancybox-x.png rename to web/framework/gii/assets/js/fancybox/fancybox-x.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancybox-y.png b/web/framework/gii/assets/js/fancybox/fancybox-y.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancybox-y.png rename to web/framework/gii/assets/js/fancybox/fancybox-y.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/fancybox.png b/web/framework/gii/assets/js/fancybox/fancybox.png similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/fancybox.png rename to web/framework/gii/assets/js/fancybox/fancybox.png diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/jquery.fancybox-1.3.1.css b/web/framework/gii/assets/js/fancybox/jquery.fancybox-1.3.1.css similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/jquery.fancybox-1.3.1.css rename to web/framework/gii/assets/js/fancybox/jquery.fancybox-1.3.1.css diff --git a/web/framework-1.1.17/gii/assets/js/fancybox/jquery.fancybox-1.3.1.pack.js b/web/framework/gii/assets/js/fancybox/jquery.fancybox-1.3.1.pack.js similarity index 100% rename from web/framework-1.1.17/gii/assets/js/fancybox/jquery.fancybox-1.3.1.pack.js rename to web/framework/gii/assets/js/fancybox/jquery.fancybox-1.3.1.pack.js diff --git a/web/framework-1.1.17/gii/assets/js/main.js b/web/framework/gii/assets/js/main.js similarity index 100% rename from web/framework-1.1.17/gii/assets/js/main.js rename to web/framework/gii/assets/js/main.js diff --git a/web/framework-1.1.17/gii/assets/js/tooltip.js b/web/framework/gii/assets/js/tooltip.js similarity index 100% rename from web/framework-1.1.17/gii/assets/js/tooltip.js rename to web/framework/gii/assets/js/tooltip.js diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff.php b/web/framework/gii/components/Pear/Text/Diff.php similarity index 95% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff.php rename to web/framework/gii/components/Pear/Text/Diff.php index 4b30968..eb0079a 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff.php +++ b/web/framework/gii/components/Pear/Text/Diff.php @@ -6,10 +6,10 @@ * The original PHP version of this code was written by Geoffrey T. Dairiki * , and is used/adapted with his permission. * - * $Horde: framework/Text_Diff/Diff.php,v 1.11.2.11 2008/02/24 10:57:46 jan Exp $ + * $Horde: framework/Text_Diff/Diff.php,v 1.11.2.12 2009/01/06 15:23:41 jan Exp $ * * Copyright 2004 Geoffrey T. Dairiki - * Copyright 2004-2008 The Horde Project (http://www.horde.org/) + * Copyright 2004-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -35,7 +35,7 @@ class Text_Diff { * Normally an array of two arrays, each * containing the lines from a file. */ - function Text_Diff($engine, $params) + function __construct($engine, $params) { // Backward compatibility workaround. if (!is_string($engine)) { @@ -307,13 +307,13 @@ class Text_MappedDiff extends Text_Diff { * @param array $mapped_to_lines This array should have the same number * of elements as $to_lines. */ - function Text_MappedDiff($from_lines, $to_lines, + function __construct($from_lines, $to_lines, $mapped_from_lines, $mapped_to_lines) { assert(count($from_lines) == count($mapped_from_lines)); assert(count($to_lines) == count($mapped_to_lines)); - parent::Text_Diff($mapped_from_lines, $mapped_to_lines); + parent::__construct($mapped_from_lines, $mapped_to_lines); $xi = $yi = 0; for ($i = 0; $i < count($this->_edits); $i++) { @@ -369,7 +369,7 @@ class Text_Diff_Op { */ class Text_Diff_Op_copy extends Text_Diff_Op { - function Text_Diff_Op_copy($orig, $final = false) + function __construct($orig, $final = false) { if (!is_array($final)) { $final = $orig; @@ -394,7 +394,7 @@ class Text_Diff_Op_copy extends Text_Diff_Op { */ class Text_Diff_Op_delete extends Text_Diff_Op { - function Text_Diff_Op_delete($lines) + function __construct($lines) { $this->orig = $lines; $this->final = false; @@ -416,7 +416,7 @@ class Text_Diff_Op_delete extends Text_Diff_Op { */ class Text_Diff_Op_add extends Text_Diff_Op { - function Text_Diff_Op_add($lines) + function __construct($lines) { $this->final = $lines; $this->orig = false; @@ -438,7 +438,7 @@ class Text_Diff_Op_add extends Text_Diff_Op { */ class Text_Diff_Op_change extends Text_Diff_Op { - function Text_Diff_Op_change($orig, $final) + function __construct($orig, $final) { $this->orig = $orig; $this->final = $final; diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/native.php b/web/framework/gii/components/Pear/Text/Diff/Engine/native.php similarity index 99% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/native.php rename to web/framework/gii/components/Pear/Text/Diff/Engine/native.php index 410f849..86240e5 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/native.php +++ b/web/framework/gii/components/Pear/Text/Diff/Engine/native.php @@ -18,9 +18,9 @@ * Geoffrey T. Dairiki . The original PHP version of this * code was written by him, and is used/adapted with his permission. * - * $Horde: framework/Text_Diff/Diff/Engine/native.php,v 1.7.2.4 2008/01/04 10:38:10 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Engine/native.php,v 1.7.2.5 2009/01/06 15:23:41 jan Exp $ * - * Copyright 2004-2008 The Horde Project (http://www.horde.org/) + * Copyright 2004-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/shell.php b/web/framework/gii/components/Pear/Text/Diff/Engine/shell.php similarity index 93% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/shell.php rename to web/framework/gii/components/Pear/Text/Diff/Engine/shell.php index f1aaa98..7f858cb 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/shell.php +++ b/web/framework/gii/components/Pear/Text/Diff/Engine/shell.php @@ -5,9 +5,9 @@ * This class uses the Unix `diff` program via shell_exec to compute the * differences between the two input arrays. * - * $Horde: framework/Text_Diff/Diff/Engine/shell.php,v 1.6.2.3 2008/01/04 10:37:27 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Engine/shell.php,v 1.6.2.4 2009/01/06 15:23:41 jan Exp $ * - * Copyright 2007-2008 The Horde Project (http://www.horde.org/) + * Copyright 2007-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -138,8 +138,10 @@ class Text_Diff_Engine_shell { * @access private * * @param array &$text_lines Either $from_lines or $to_lines - * @param integer &$line_no Current line number - * @param integer $end Optional end line, when we want to chop more than one line. + * @param int &$line_no Current line number + * @param int $end Optional end line, when we want to chop more + * than one line. + * * @return array The chopped lines */ function _getLines(&$text_lines, &$line_no, $end = false) diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/string.php b/web/framework/gii/components/Pear/Text/Diff/Engine/string.php similarity index 93% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/string.php rename to web/framework/gii/components/Pear/Text/Diff/Engine/string.php index 4b29daa..9352e60 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/string.php +++ b/web/framework/gii/components/Pear/Text/Diff/Engine/string.php @@ -10,10 +10,10 @@ * echo $renderer->render($diff); * * - * $Horde: framework/Text_Diff/Diff/Engine/string.php,v 1.5.2.5 2008/09/10 08:31:58 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Engine/string.php,v 1.5.2.7 2009/07/24 13:04:43 jan Exp $ * * Copyright 2005 Örjan Persson - * Copyright 2005-2008 The Horde Project (http://www.horde.org/) + * Copyright 2005-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -39,6 +39,19 @@ class Text_Diff_Engine_string { */ function diff($diff, $mode = 'autodetect') { + // Detect line breaks. + $lnbr = "\n"; + if (strpos($diff, "\r\n") !== false) { + $lnbr = "\r\n"; + } elseif (strpos($diff, "\r") !== false) { + $lnbr = "\r"; + } + + // Make sure we have a line break at the EOF. + if (substr($diff, -strlen($lnbr)) != $lnbr) { + $diff .= $lnbr; + } + if ($mode != 'autodetect' && $mode != 'context' && $mode != 'unified') { return PEAR::raiseError('Type of diff is unsupported'); } @@ -56,7 +69,7 @@ class Text_Diff_Engine_string { } // Split by new line and remove the diff header, if there is one. - $diff = explode("\n", $diff); + $diff = explode($lnbr, $diff); if (($mode == 'context' && strpos($diff[0], '***') === 0) || ($mode == 'unified' && strpos($diff[0], '---') === 0)) { array_shift($diff); diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/xdiff.php b/web/framework/gii/components/Pear/Text/Diff/Engine/xdiff.php similarity index 89% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/xdiff.php rename to web/framework/gii/components/Pear/Text/Diff/Engine/xdiff.php index 681ea4c..da8f174 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Engine/xdiff.php +++ b/web/framework/gii/components/Pear/Text/Diff/Engine/xdiff.php @@ -5,9 +5,9 @@ * This class uses the xdiff PECL package (http://pecl.php.net/package/xdiff) * to compute the differences between the two input arrays. * - * $Horde: framework/Text_Diff/Diff/Engine/xdiff.php,v 1.4.2.3 2008/01/04 10:37:27 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Engine/xdiff.php,v 1.4.2.5 2009/07/24 13:06:24 jan Exp $ * - * Copyright 2004-2008 The Horde Project (http://www.horde.org/) + * Copyright 2004-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -42,6 +42,9 @@ class Text_Diff_Engine_xdiff { * valid, albeit a little less descriptive and efficient. */ $edits = array(); foreach ($diff as $line) { + if (!strlen($line)) { + continue; + } switch ($line[0]) { case ' ': $edits[] = new Text_Diff_Op_copy(array(substr($line, 1))); diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Mapped.php b/web/framework/gii/components/Pear/Text/Diff/Mapped.php similarity index 86% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Mapped.php rename to web/framework/gii/components/Pear/Text/Diff/Mapped.php index 7f67184..e4a3e01 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Mapped.php +++ b/web/framework/gii/components/Pear/Text/Diff/Mapped.php @@ -1,8 +1,8 @@ $value) { $v = '_' . $param; diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/context.php b/web/framework/gii/components/Pear/Text/Diff/Renderer/context.php similarity index 94% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/context.php rename to web/framework/gii/components/Pear/Text/Diff/Renderer/context.php index 7977500..af53801 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/context.php +++ b/web/framework/gii/components/Pear/Text/Diff/Renderer/context.php @@ -4,9 +4,9 @@ * * This class renders the diff in classic "context diff" format. * - * $Horde: framework/Text_Diff/Diff/Renderer/context.php,v 1.3.2.3 2008/01/04 10:37:27 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Renderer/context.php,v 1.3.2.4 2009/01/06 15:23:42 jan Exp $ * - * Copyright 2004-2008 The Horde Project (http://www.horde.org/) + * Copyright 2004-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/inline.php b/web/framework/gii/components/Pear/Text/Diff/Renderer/inline.php similarity index 90% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/inline.php rename to web/framework/gii/components/Pear/Text/Diff/Renderer/inline.php index 7f4e5ef..5dd20d2 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/inline.php +++ b/web/framework/gii/components/Pear/Text/Diff/Renderer/inline.php @@ -2,9 +2,9 @@ /** * "Inline" diff renderer. * - * $Horde: framework/Text_Diff/Diff/Renderer/inline.php,v 1.4.10.14 2008/01/04 10:37:27 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Renderer/inline.php,v 1.4.10.16 2009/07/24 13:25:29 jan Exp $ * - * Copyright 2004-2008 The Horde Project (http://www.horde.org/) + * Copyright 2004-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -131,12 +131,14 @@ class Text_Diff_Renderer_inline extends Text_Diff_Renderer { /* We want to split on word boundaries, but we need to * preserve whitespace as well. Therefore we split on words, * but include all blocks of whitespace in the wordlist. */ - $diff = new Text_Diff($this->_splitOnWords($text1, $nl), - $this->_splitOnWords($text2, $nl)); + $diff = new Text_Diff('native', + array($this->_splitOnWords($text1, $nl), + $this->_splitOnWords($text2, $nl))); /* Get the diff in inline format. */ - $renderer = new Text_Diff_Renderer_inline(array_merge($this->getParams(), - array('split_level' => 'words'))); + $renderer = new Text_Diff_Renderer_inline + (array_merge($this->getParams(), + array('split_level' => 'words'))); /* Run the diff and get the output. */ return str_replace($nl, "\n", $renderer->render($diff)) . "\n"; diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/unified.php b/web/framework/gii/components/Pear/Text/Diff/Renderer/unified.php similarity index 93% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/unified.php rename to web/framework/gii/components/Pear/Text/Diff/Renderer/unified.php index 943d519..f990f72 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/Renderer/unified.php +++ b/web/framework/gii/components/Pear/Text/Diff/Renderer/unified.php @@ -4,9 +4,9 @@ * * This class renders the diff in classic "unified diff" format. * - * $Horde: framework/Text_Diff/Diff/Renderer/unified.php,v 1.3.10.6 2008/01/04 10:37:27 jan Exp $ + * $Horde: framework/Text_Diff/Diff/Renderer/unified.php,v 1.3.10.7 2009/01/06 15:23:42 jan Exp $ * - * Copyright 2004-2008 The Horde Project (http://www.horde.org/) + * Copyright 2004-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff/ThreeWay.php b/web/framework/gii/components/Pear/Text/Diff/ThreeWay.php similarity index 94% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff/ThreeWay.php rename to web/framework/gii/components/Pear/Text/Diff/ThreeWay.php index 4e4b939..a247574 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff/ThreeWay.php +++ b/web/framework/gii/components/Pear/Text/Diff/ThreeWay.php @@ -2,9 +2,9 @@ /** * A class for computing three way diffs. * - * $Horde: framework/Text_Diff/Diff/ThreeWay.php,v 1.3.2.3 2008/01/04 10:37:27 jan Exp $ + * $Horde: framework/Text_Diff/Diff/ThreeWay.php,v 1.3.2.4 2009/01/06 15:23:41 jan Exp $ * - * Copyright 2007-2008 The Horde Project (http://www.horde.org/) + * Copyright 2007-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -38,7 +38,7 @@ class Text_Diff_ThreeWay extends Text_Diff { * @param array $final1 The first version to compare to. * @param array $final2 The second version to compare to. */ - function Text_Diff_ThreeWay($orig, $final1, $final2) + function __construct($orig, $final1, $final2) { if (extension_loaded('xdiff')) { $engine = new Text_Diff_Engine_xdiff(); @@ -155,7 +155,7 @@ class Text_Diff_ThreeWay extends Text_Diff { */ class Text_Diff_ThreeWay_Op { - function Text_Diff_ThreeWay_Op($orig = false, $final1 = false, $final2 = false) + function __construct($orig = false, $final1 = false, $final2 = false) { $this->orig = $orig ? $orig : array(); $this->final1 = $final1 ? $final1 : array(); @@ -194,7 +194,7 @@ class Text_Diff_ThreeWay_Op { */ class Text_Diff_ThreeWay_Op_copy extends Text_Diff_ThreeWay_Op { - function Text_Diff_ThreeWay_Op_Copy($lines = false) + function __construct($lines = false) { $this->orig = $lines ? $lines : array(); $this->final1 = &$this->orig; @@ -221,7 +221,7 @@ class Text_Diff_ThreeWay_Op_copy extends Text_Diff_ThreeWay_Op { */ class Text_Diff_ThreeWay_BlockBuilder { - function Text_Diff_ThreeWay_BlockBuilder() + function __construct() { $this->_init(); } diff --git a/web/framework-1.1.17/gii/components/Pear/Text/Diff3.php b/web/framework/gii/components/Pear/Text/Diff3.php similarity index 95% rename from web/framework-1.1.17/gii/components/Pear/Text/Diff3.php rename to web/framework/gii/components/Pear/Text/Diff3.php index 2c28370..fa6eb0b 100644 --- a/web/framework-1.1.17/gii/components/Pear/Text/Diff3.php +++ b/web/framework/gii/components/Pear/Text/Diff3.php @@ -2,9 +2,9 @@ /** * A class for computing three way diffs. * - * $Horde: framework/Text_Diff/Diff3.php,v 1.2.10.6 2008/01/04 10:37:26 jan Exp $ + * $Horde: framework/Text_Diff/Diff3.php,v 1.2.10.7 2009/01/06 15:23:41 jan Exp $ * - * Copyright 2007-2008 The Horde Project (http://www.horde.org/) + * Copyright 2007-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you did * not receive this file, see http://opensource.org/licenses/lgpl-license.php. @@ -38,7 +38,7 @@ class Text_Diff3 extends Text_Diff { * @param array $final1 The first version to compare to. * @param array $final2 The second version to compare to. */ - function Text_Diff3($orig, $final1, $final2) + function __construct($orig, $final1, $final2) { if (extension_loaded('xdiff')) { $engine = new Text_Diff_Engine_xdiff(); @@ -155,7 +155,7 @@ class Text_Diff3 extends Text_Diff { */ class Text_Diff3_Op { - function Text_Diff3_Op($orig = false, $final1 = false, $final2 = false) + function __construct($orig = false, $final1 = false, $final2 = false) { $this->orig = $orig ? $orig : array(); $this->final1 = $final1 ? $final1 : array(); @@ -221,7 +221,7 @@ class Text_Diff3_Op_copy extends Text_Diff3_Op { */ class Text_Diff3_BlockBuilder { - function Text_Diff3_BlockBuilder() + function __construct() { $this->_init(); } diff --git a/web/framework-1.1.17/gii/components/TextDiff.php b/web/framework/gii/components/TextDiff.php similarity index 100% rename from web/framework-1.1.17/gii/components/TextDiff.php rename to web/framework/gii/components/TextDiff.php diff --git a/web/framework-1.1.17/gii/components/UserIdentity.php b/web/framework/gii/components/UserIdentity.php similarity index 96% rename from web/framework-1.1.17/gii/components/UserIdentity.php rename to web/framework/gii/components/UserIdentity.php index 81d6aa1..94798af 100644 --- a/web/framework-1.1.17/gii/components/UserIdentity.php +++ b/web/framework/gii/components/UserIdentity.php @@ -5,6 +5,7 @@ class UserIdentity extends CUserIdentity /** * Authenticates a user. * @return boolean whether authentication succeeds. + * @throws CException */ public function authenticate() { diff --git a/web/framework-1.1.17/gii/controllers/DefaultController.php b/web/framework/gii/controllers/DefaultController.php similarity index 100% rename from web/framework-1.1.17/gii/controllers/DefaultController.php rename to web/framework/gii/controllers/DefaultController.php diff --git a/web/framework-1.1.17/gii/generators/controller/ControllerCode.php b/web/framework/gii/generators/controller/ControllerCode.php similarity index 100% rename from web/framework-1.1.17/gii/generators/controller/ControllerCode.php rename to web/framework/gii/generators/controller/ControllerCode.php diff --git a/web/framework-1.1.17/gii/generators/controller/ControllerGenerator.php b/web/framework/gii/generators/controller/ControllerGenerator.php similarity index 100% rename from web/framework-1.1.17/gii/generators/controller/ControllerGenerator.php rename to web/framework/gii/generators/controller/ControllerGenerator.php diff --git a/web/framework-1.1.17/gii/generators/controller/templates/default/controller.php b/web/framework/gii/generators/controller/templates/default/controller.php similarity index 100% rename from web/framework-1.1.17/gii/generators/controller/templates/default/controller.php rename to web/framework/gii/generators/controller/templates/default/controller.php diff --git a/web/framework-1.1.17/gii/generators/controller/templates/default/view.php b/web/framework/gii/generators/controller/templates/default/view.php similarity index 100% rename from web/framework-1.1.17/gii/generators/controller/templates/default/view.php rename to web/framework/gii/generators/controller/templates/default/view.php diff --git a/web/framework-1.1.17/gii/generators/controller/views/index.php b/web/framework/gii/generators/controller/views/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/controller/views/index.php rename to web/framework/gii/generators/controller/views/index.php diff --git a/web/framework-1.1.17/gii/generators/crud/CrudCode.php b/web/framework/gii/generators/crud/CrudCode.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/CrudCode.php rename to web/framework/gii/generators/crud/CrudCode.php diff --git a/web/framework-1.1.17/gii/generators/crud/CrudGenerator.php b/web/framework/gii/generators/crud/CrudGenerator.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/CrudGenerator.php rename to web/framework/gii/generators/crud/CrudGenerator.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/_form.php b/web/framework/gii/generators/crud/templates/default/_form.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/_form.php rename to web/framework/gii/generators/crud/templates/default/_form.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/_search.php b/web/framework/gii/generators/crud/templates/default/_search.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/_search.php rename to web/framework/gii/generators/crud/templates/default/_search.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/_view.php b/web/framework/gii/generators/crud/templates/default/_view.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/_view.php rename to web/framework/gii/generators/crud/templates/default/_view.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/admin.php b/web/framework/gii/generators/crud/templates/default/admin.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/admin.php rename to web/framework/gii/generators/crud/templates/default/admin.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/controller.php b/web/framework/gii/generators/crud/templates/default/controller.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/controller.php rename to web/framework/gii/generators/crud/templates/default/controller.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/create.php b/web/framework/gii/generators/crud/templates/default/create.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/create.php rename to web/framework/gii/generators/crud/templates/default/create.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/index.php b/web/framework/gii/generators/crud/templates/default/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/index.php rename to web/framework/gii/generators/crud/templates/default/index.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/update.php b/web/framework/gii/generators/crud/templates/default/update.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/update.php rename to web/framework/gii/generators/crud/templates/default/update.php diff --git a/web/framework-1.1.17/gii/generators/crud/templates/default/view.php b/web/framework/gii/generators/crud/templates/default/view.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/templates/default/view.php rename to web/framework/gii/generators/crud/templates/default/view.php diff --git a/web/framework-1.1.17/gii/generators/crud/views/index.php b/web/framework/gii/generators/crud/views/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/crud/views/index.php rename to web/framework/gii/generators/crud/views/index.php diff --git a/web/framework-1.1.17/gii/generators/form/FormCode.php b/web/framework/gii/generators/form/FormCode.php similarity index 100% rename from web/framework-1.1.17/gii/generators/form/FormCode.php rename to web/framework/gii/generators/form/FormCode.php diff --git a/web/framework-1.1.17/gii/generators/form/FormGenerator.php b/web/framework/gii/generators/form/FormGenerator.php similarity index 100% rename from web/framework-1.1.17/gii/generators/form/FormGenerator.php rename to web/framework/gii/generators/form/FormGenerator.php diff --git a/web/framework-1.1.17/gii/generators/form/templates/default/action.php b/web/framework/gii/generators/form/templates/default/action.php similarity index 100% rename from web/framework-1.1.17/gii/generators/form/templates/default/action.php rename to web/framework/gii/generators/form/templates/default/action.php diff --git a/web/framework-1.1.17/gii/generators/form/templates/default/form.php b/web/framework/gii/generators/form/templates/default/form.php similarity index 100% rename from web/framework-1.1.17/gii/generators/form/templates/default/form.php rename to web/framework/gii/generators/form/templates/default/form.php diff --git a/web/framework-1.1.17/gii/generators/form/views/index.php b/web/framework/gii/generators/form/views/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/form/views/index.php rename to web/framework/gii/generators/form/views/index.php diff --git a/web/framework-1.1.17/gii/generators/model/ModelCode.php b/web/framework/gii/generators/model/ModelCode.php similarity index 100% rename from web/framework-1.1.17/gii/generators/model/ModelCode.php rename to web/framework/gii/generators/model/ModelCode.php diff --git a/web/framework-1.1.17/gii/generators/model/ModelGenerator.php b/web/framework/gii/generators/model/ModelGenerator.php similarity index 100% rename from web/framework-1.1.17/gii/generators/model/ModelGenerator.php rename to web/framework/gii/generators/model/ModelGenerator.php diff --git a/web/framework-1.1.17/gii/generators/model/templates/default/model.php b/web/framework/gii/generators/model/templates/default/model.php similarity index 100% rename from web/framework-1.1.17/gii/generators/model/templates/default/model.php rename to web/framework/gii/generators/model/templates/default/model.php diff --git a/web/framework-1.1.17/gii/generators/model/views/index.php b/web/framework/gii/generators/model/views/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/model/views/index.php rename to web/framework/gii/generators/model/views/index.php diff --git a/web/framework-1.1.17/gii/generators/module/ModuleCode.php b/web/framework/gii/generators/module/ModuleCode.php similarity index 100% rename from web/framework-1.1.17/gii/generators/module/ModuleCode.php rename to web/framework/gii/generators/module/ModuleCode.php diff --git a/web/framework-1.1.17/gii/generators/module/ModuleGenerator.php b/web/framework/gii/generators/module/ModuleGenerator.php similarity index 100% rename from web/framework-1.1.17/gii/generators/module/ModuleGenerator.php rename to web/framework/gii/generators/module/ModuleGenerator.php diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/components/.gitkeep b/web/framework/gii/generators/module/templates/default/components/.gitkeep similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/components/.gitkeep rename to web/framework/gii/generators/module/templates/default/components/.gitkeep diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/controllers/DefaultController.php b/web/framework/gii/generators/module/templates/default/controllers/DefaultController.php similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/controllers/DefaultController.php rename to web/framework/gii/generators/module/templates/default/controllers/DefaultController.php diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/messages/.gitkeep b/web/framework/gii/generators/module/templates/default/messages/.gitkeep similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/messages/.gitkeep rename to web/framework/gii/generators/module/templates/default/messages/.gitkeep diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/models/.gitkeep b/web/framework/gii/generators/module/templates/default/models/.gitkeep similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/models/.gitkeep rename to web/framework/gii/generators/module/templates/default/models/.gitkeep diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/module.php b/web/framework/gii/generators/module/templates/default/module.php similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/module.php rename to web/framework/gii/generators/module/templates/default/module.php diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/views/default/index.php b/web/framework/gii/generators/module/templates/default/views/default/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/views/default/index.php rename to web/framework/gii/generators/module/templates/default/views/default/index.php diff --git a/web/framework-1.1.17/gii/generators/module/templates/default/views/layouts/.gitkeep b/web/framework/gii/generators/module/templates/default/views/layouts/.gitkeep similarity index 100% rename from web/framework-1.1.17/gii/generators/module/templates/default/views/layouts/.gitkeep rename to web/framework/gii/generators/module/templates/default/views/layouts/.gitkeep diff --git a/web/framework-1.1.17/gii/generators/module/views/index.php b/web/framework/gii/generators/module/views/index.php similarity index 100% rename from web/framework-1.1.17/gii/generators/module/views/index.php rename to web/framework/gii/generators/module/views/index.php diff --git a/web/framework-1.1.17/gii/models/LoginForm.php b/web/framework/gii/models/LoginForm.php similarity index 86% rename from web/framework-1.1.17/gii/models/LoginForm.php rename to web/framework/gii/models/LoginForm.php index f4b838c..31118ab 100644 --- a/web/framework-1.1.17/gii/models/LoginForm.php +++ b/web/framework/gii/models/LoginForm.php @@ -19,6 +19,8 @@ class LoginForm extends CFormModel /** * Authenticates the password. * This is the 'authenticate' validator as declared in rules(). + * @param string $attribute the name of the attribute to be validated. + * @param array $params additional parameters passed with rule when being executed. */ public function authenticate($attribute,$params) { diff --git a/web/framework-1.1.17/gii/views/common/code.php b/web/framework/gii/views/common/code.php similarity index 100% rename from web/framework-1.1.17/gii/views/common/code.php rename to web/framework/gii/views/common/code.php diff --git a/web/framework-1.1.17/gii/views/common/diff.php b/web/framework/gii/views/common/diff.php similarity index 100% rename from web/framework-1.1.17/gii/views/common/diff.php rename to web/framework/gii/views/common/diff.php diff --git a/web/framework-1.1.17/gii/views/common/generator.php b/web/framework/gii/views/common/generator.php similarity index 100% rename from web/framework-1.1.17/gii/views/common/generator.php rename to web/framework/gii/views/common/generator.php diff --git a/web/framework-1.1.17/gii/views/default/error.php b/web/framework/gii/views/default/error.php similarity index 100% rename from web/framework-1.1.17/gii/views/default/error.php rename to web/framework/gii/views/default/error.php diff --git a/web/framework-1.1.17/gii/views/default/index.php b/web/framework/gii/views/default/index.php similarity index 100% rename from web/framework-1.1.17/gii/views/default/index.php rename to web/framework/gii/views/default/index.php diff --git a/web/framework-1.1.17/gii/views/default/login.php b/web/framework/gii/views/default/login.php similarity index 100% rename from web/framework-1.1.17/gii/views/default/login.php rename to web/framework/gii/views/default/login.php diff --git a/web/framework-1.1.17/gii/views/layouts/column1.php b/web/framework/gii/views/layouts/column1.php similarity index 100% rename from web/framework-1.1.17/gii/views/layouts/column1.php rename to web/framework/gii/views/layouts/column1.php diff --git a/web/framework-1.1.17/gii/views/layouts/generator.php b/web/framework/gii/views/layouts/generator.php similarity index 100% rename from web/framework-1.1.17/gii/views/layouts/generator.php rename to web/framework/gii/views/layouts/generator.php diff --git a/web/framework-1.1.17/gii/views/layouts/main.php b/web/framework/gii/views/layouts/main.php similarity index 100% rename from web/framework-1.1.17/gii/views/layouts/main.php rename to web/framework/gii/views/layouts/main.php diff --git a/web/framework-1.1.17/i18n/CChoiceFormat.php b/web/framework/i18n/CChoiceFormat.php similarity index 100% rename from web/framework-1.1.17/i18n/CChoiceFormat.php rename to web/framework/i18n/CChoiceFormat.php diff --git a/web/framework-1.1.17/i18n/CDateFormatter.php b/web/framework/i18n/CDateFormatter.php similarity index 100% rename from web/framework-1.1.17/i18n/CDateFormatter.php rename to web/framework/i18n/CDateFormatter.php diff --git a/web/framework-1.1.17/i18n/CDbMessageSource.php b/web/framework/i18n/CDbMessageSource.php similarity index 100% rename from web/framework-1.1.17/i18n/CDbMessageSource.php rename to web/framework/i18n/CDbMessageSource.php diff --git a/web/framework-1.1.17/i18n/CGettextMessageSource.php b/web/framework/i18n/CGettextMessageSource.php similarity index 98% rename from web/framework-1.1.17/i18n/CGettextMessageSource.php rename to web/framework/i18n/CGettextMessageSource.php index 881d098..bf1ed87 100644 --- a/web/framework-1.1.17/i18n/CGettextMessageSource.php +++ b/web/framework/i18n/CGettextMessageSource.php @@ -53,7 +53,7 @@ class CGettextMessageSource extends CMessageSource */ public $useMoFile=true; /** - * @var boolean whether to use Big Endian to read and write MO files. + * @var boolean whether to use Big Endian to read MO files. * Defaults to false. This property is only used when {@link useMoFile} is true. */ public $useBigEndian=false; diff --git a/web/framework-1.1.17/i18n/CLocale.php b/web/framework/i18n/CLocale.php similarity index 100% rename from web/framework-1.1.17/i18n/CLocale.php rename to web/framework/i18n/CLocale.php diff --git a/web/framework-1.1.17/i18n/CMessageSource.php b/web/framework/i18n/CMessageSource.php similarity index 100% rename from web/framework-1.1.17/i18n/CMessageSource.php rename to web/framework/i18n/CMessageSource.php diff --git a/web/framework-1.1.17/i18n/CNumberFormatter.php b/web/framework/i18n/CNumberFormatter.php similarity index 100% rename from web/framework-1.1.17/i18n/CNumberFormatter.php rename to web/framework/i18n/CNumberFormatter.php diff --git a/web/framework-1.1.17/i18n/CPhpMessageSource.php b/web/framework/i18n/CPhpMessageSource.php similarity index 100% rename from web/framework-1.1.17/i18n/CPhpMessageSource.php rename to web/framework/i18n/CPhpMessageSource.php diff --git a/web/framework-1.1.17/i18n/data/README.txt b/web/framework/i18n/data/README.txt similarity index 100% rename from web/framework-1.1.17/i18n/data/README.txt rename to web/framework/i18n/data/README.txt diff --git a/web/framework-1.1.17/i18n/data/aa.php b/web/framework/i18n/data/aa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/aa.php rename to web/framework/i18n/data/aa.php diff --git a/web/framework-1.1.17/i18n/data/aa_dj.php b/web/framework/i18n/data/aa_dj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/aa_dj.php rename to web/framework/i18n/data/aa_dj.php diff --git a/web/framework-1.1.17/i18n/data/aa_er.php b/web/framework/i18n/data/aa_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/aa_er.php rename to web/framework/i18n/data/aa_er.php diff --git a/web/framework-1.1.17/i18n/data/aa_et.php b/web/framework/i18n/data/aa_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/aa_et.php rename to web/framework/i18n/data/aa_et.php diff --git a/web/framework-1.1.17/i18n/data/af.php b/web/framework/i18n/data/af.php similarity index 100% rename from web/framework-1.1.17/i18n/data/af.php rename to web/framework/i18n/data/af.php diff --git a/web/framework-1.1.17/i18n/data/af_na.php b/web/framework/i18n/data/af_na.php similarity index 100% rename from web/framework-1.1.17/i18n/data/af_na.php rename to web/framework/i18n/data/af_na.php diff --git a/web/framework-1.1.17/i18n/data/af_za.php b/web/framework/i18n/data/af_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/af_za.php rename to web/framework/i18n/data/af_za.php diff --git a/web/framework-1.1.17/i18n/data/agq.php b/web/framework/i18n/data/agq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/agq.php rename to web/framework/i18n/data/agq.php diff --git a/web/framework-1.1.17/i18n/data/agq_cm.php b/web/framework/i18n/data/agq_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/agq_cm.php rename to web/framework/i18n/data/agq_cm.php diff --git a/web/framework-1.1.17/i18n/data/ak.php b/web/framework/i18n/data/ak.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ak.php rename to web/framework/i18n/data/ak.php diff --git a/web/framework-1.1.17/i18n/data/ak_gh.php b/web/framework/i18n/data/ak_gh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ak_gh.php rename to web/framework/i18n/data/ak_gh.php diff --git a/web/framework-1.1.17/i18n/data/am.php b/web/framework/i18n/data/am.php similarity index 100% rename from web/framework-1.1.17/i18n/data/am.php rename to web/framework/i18n/data/am.php diff --git a/web/framework-1.1.17/i18n/data/am_et.php b/web/framework/i18n/data/am_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/am_et.php rename to web/framework/i18n/data/am_et.php diff --git a/web/framework-1.1.17/i18n/data/ar.php b/web/framework/i18n/data/ar.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar.php rename to web/framework/i18n/data/ar.php diff --git a/web/framework-1.1.17/i18n/data/ar_001.php b/web/framework/i18n/data/ar_001.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_001.php rename to web/framework/i18n/data/ar_001.php diff --git a/web/framework-1.1.17/i18n/data/ar_ae.php b/web/framework/i18n/data/ar_ae.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_ae.php rename to web/framework/i18n/data/ar_ae.php diff --git a/web/framework-1.1.17/i18n/data/ar_bh.php b/web/framework/i18n/data/ar_bh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_bh.php rename to web/framework/i18n/data/ar_bh.php diff --git a/web/framework-1.1.17/i18n/data/ar_dj.php b/web/framework/i18n/data/ar_dj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_dj.php rename to web/framework/i18n/data/ar_dj.php diff --git a/web/framework-1.1.17/i18n/data/ar_dz.php b/web/framework/i18n/data/ar_dz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_dz.php rename to web/framework/i18n/data/ar_dz.php diff --git a/web/framework-1.1.17/i18n/data/ar_eg.php b/web/framework/i18n/data/ar_eg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_eg.php rename to web/framework/i18n/data/ar_eg.php diff --git a/web/framework-1.1.17/i18n/data/ar_eh.php b/web/framework/i18n/data/ar_eh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_eh.php rename to web/framework/i18n/data/ar_eh.php diff --git a/web/framework-1.1.17/i18n/data/ar_er.php b/web/framework/i18n/data/ar_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_er.php rename to web/framework/i18n/data/ar_er.php diff --git a/web/framework-1.1.17/i18n/data/ar_il.php b/web/framework/i18n/data/ar_il.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_il.php rename to web/framework/i18n/data/ar_il.php diff --git a/web/framework-1.1.17/i18n/data/ar_iq.php b/web/framework/i18n/data/ar_iq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_iq.php rename to web/framework/i18n/data/ar_iq.php diff --git a/web/framework-1.1.17/i18n/data/ar_jo.php b/web/framework/i18n/data/ar_jo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_jo.php rename to web/framework/i18n/data/ar_jo.php diff --git a/web/framework-1.1.17/i18n/data/ar_km.php b/web/framework/i18n/data/ar_km.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_km.php rename to web/framework/i18n/data/ar_km.php diff --git a/web/framework-1.1.17/i18n/data/ar_kw.php b/web/framework/i18n/data/ar_kw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_kw.php rename to web/framework/i18n/data/ar_kw.php diff --git a/web/framework-1.1.17/i18n/data/ar_lb.php b/web/framework/i18n/data/ar_lb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_lb.php rename to web/framework/i18n/data/ar_lb.php diff --git a/web/framework-1.1.17/i18n/data/ar_ly.php b/web/framework/i18n/data/ar_ly.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_ly.php rename to web/framework/i18n/data/ar_ly.php diff --git a/web/framework-1.1.17/i18n/data/ar_ma.php b/web/framework/i18n/data/ar_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_ma.php rename to web/framework/i18n/data/ar_ma.php diff --git a/web/framework-1.1.17/i18n/data/ar_mr.php b/web/framework/i18n/data/ar_mr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_mr.php rename to web/framework/i18n/data/ar_mr.php diff --git a/web/framework-1.1.17/i18n/data/ar_om.php b/web/framework/i18n/data/ar_om.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_om.php rename to web/framework/i18n/data/ar_om.php diff --git a/web/framework-1.1.17/i18n/data/ar_ps.php b/web/framework/i18n/data/ar_ps.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_ps.php rename to web/framework/i18n/data/ar_ps.php diff --git a/web/framework-1.1.17/i18n/data/ar_qa.php b/web/framework/i18n/data/ar_qa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_qa.php rename to web/framework/i18n/data/ar_qa.php diff --git a/web/framework-1.1.17/i18n/data/ar_sa.php b/web/framework/i18n/data/ar_sa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_sa.php rename to web/framework/i18n/data/ar_sa.php diff --git a/web/framework-1.1.17/i18n/data/ar_sd.php b/web/framework/i18n/data/ar_sd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_sd.php rename to web/framework/i18n/data/ar_sd.php diff --git a/web/framework-1.1.17/i18n/data/ar_so.php b/web/framework/i18n/data/ar_so.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_so.php rename to web/framework/i18n/data/ar_so.php diff --git a/web/framework-1.1.17/i18n/data/ar_sy.php b/web/framework/i18n/data/ar_sy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_sy.php rename to web/framework/i18n/data/ar_sy.php diff --git a/web/framework-1.1.17/i18n/data/ar_td.php b/web/framework/i18n/data/ar_td.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_td.php rename to web/framework/i18n/data/ar_td.php diff --git a/web/framework-1.1.17/i18n/data/ar_tn.php b/web/framework/i18n/data/ar_tn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_tn.php rename to web/framework/i18n/data/ar_tn.php diff --git a/web/framework-1.1.17/i18n/data/ar_ye.php b/web/framework/i18n/data/ar_ye.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ar_ye.php rename to web/framework/i18n/data/ar_ye.php diff --git a/web/framework-1.1.17/i18n/data/as.php b/web/framework/i18n/data/as.php similarity index 100% rename from web/framework-1.1.17/i18n/data/as.php rename to web/framework/i18n/data/as.php diff --git a/web/framework-1.1.17/i18n/data/as_in.php b/web/framework/i18n/data/as_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/as_in.php rename to web/framework/i18n/data/as_in.php diff --git a/web/framework-1.1.17/i18n/data/asa.php b/web/framework/i18n/data/asa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/asa.php rename to web/framework/i18n/data/asa.php diff --git a/web/framework-1.1.17/i18n/data/asa_tz.php b/web/framework/i18n/data/asa_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/asa_tz.php rename to web/framework/i18n/data/asa_tz.php diff --git a/web/framework-1.1.17/i18n/data/ast.php b/web/framework/i18n/data/ast.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ast.php rename to web/framework/i18n/data/ast.php diff --git a/web/framework-1.1.17/i18n/data/ast_es.php b/web/framework/i18n/data/ast_es.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ast_es.php rename to web/framework/i18n/data/ast_es.php diff --git a/web/framework-1.1.17/i18n/data/az.php b/web/framework/i18n/data/az.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az.php rename to web/framework/i18n/data/az.php diff --git a/web/framework-1.1.17/i18n/data/az_arab.php b/web/framework/i18n/data/az_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_arab.php rename to web/framework/i18n/data/az_arab.php diff --git a/web/framework-1.1.17/i18n/data/az_arab_ir.php b/web/framework/i18n/data/az_arab_ir.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_arab_ir.php rename to web/framework/i18n/data/az_arab_ir.php diff --git a/web/framework-1.1.17/i18n/data/az_az.php b/web/framework/i18n/data/az_az.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_az.php rename to web/framework/i18n/data/az_az.php diff --git a/web/framework-1.1.17/i18n/data/az_cyrl.php b/web/framework/i18n/data/az_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_cyrl.php rename to web/framework/i18n/data/az_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/az_cyrl_az.php b/web/framework/i18n/data/az_cyrl_az.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_cyrl_az.php rename to web/framework/i18n/data/az_cyrl_az.php diff --git a/web/framework-1.1.17/i18n/data/az_ir.php b/web/framework/i18n/data/az_ir.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_ir.php rename to web/framework/i18n/data/az_ir.php diff --git a/web/framework-1.1.17/i18n/data/az_latn.php b/web/framework/i18n/data/az_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_latn.php rename to web/framework/i18n/data/az_latn.php diff --git a/web/framework-1.1.17/i18n/data/az_latn_az.php b/web/framework/i18n/data/az_latn_az.php similarity index 100% rename from web/framework-1.1.17/i18n/data/az_latn_az.php rename to web/framework/i18n/data/az_latn_az.php diff --git a/web/framework-1.1.17/i18n/data/bas.php b/web/framework/i18n/data/bas.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bas.php rename to web/framework/i18n/data/bas.php diff --git a/web/framework-1.1.17/i18n/data/bas_cm.php b/web/framework/i18n/data/bas_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bas_cm.php rename to web/framework/i18n/data/bas_cm.php diff --git a/web/framework-1.1.17/i18n/data/be.php b/web/framework/i18n/data/be.php similarity index 100% rename from web/framework-1.1.17/i18n/data/be.php rename to web/framework/i18n/data/be.php diff --git a/web/framework-1.1.17/i18n/data/be_by.php b/web/framework/i18n/data/be_by.php similarity index 100% rename from web/framework-1.1.17/i18n/data/be_by.php rename to web/framework/i18n/data/be_by.php diff --git a/web/framework-1.1.17/i18n/data/bem.php b/web/framework/i18n/data/bem.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bem.php rename to web/framework/i18n/data/bem.php diff --git a/web/framework-1.1.17/i18n/data/bem_zm.php b/web/framework/i18n/data/bem_zm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bem_zm.php rename to web/framework/i18n/data/bem_zm.php diff --git a/web/framework-1.1.17/i18n/data/bez.php b/web/framework/i18n/data/bez.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bez.php rename to web/framework/i18n/data/bez.php diff --git a/web/framework-1.1.17/i18n/data/bez_tz.php b/web/framework/i18n/data/bez_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bez_tz.php rename to web/framework/i18n/data/bez_tz.php diff --git a/web/framework-1.1.17/i18n/data/bg.php b/web/framework/i18n/data/bg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bg.php rename to web/framework/i18n/data/bg.php diff --git a/web/framework-1.1.17/i18n/data/bg_bg.php b/web/framework/i18n/data/bg_bg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bg_bg.php rename to web/framework/i18n/data/bg_bg.php diff --git a/web/framework-1.1.17/i18n/data/bm.php b/web/framework/i18n/data/bm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bm.php rename to web/framework/i18n/data/bm.php diff --git a/web/framework-1.1.17/i18n/data/bm_ml.php b/web/framework/i18n/data/bm_ml.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bm_ml.php rename to web/framework/i18n/data/bm_ml.php diff --git a/web/framework-1.1.17/i18n/data/bn.php b/web/framework/i18n/data/bn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bn.php rename to web/framework/i18n/data/bn.php diff --git a/web/framework-1.1.17/i18n/data/bn_bd.php b/web/framework/i18n/data/bn_bd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bn_bd.php rename to web/framework/i18n/data/bn_bd.php diff --git a/web/framework-1.1.17/i18n/data/bn_in.php b/web/framework/i18n/data/bn_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bn_in.php rename to web/framework/i18n/data/bn_in.php diff --git a/web/framework-1.1.17/i18n/data/bo.php b/web/framework/i18n/data/bo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bo.php rename to web/framework/i18n/data/bo.php diff --git a/web/framework-1.1.17/i18n/data/bo_cn.php b/web/framework/i18n/data/bo_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bo_cn.php rename to web/framework/i18n/data/bo_cn.php diff --git a/web/framework-1.1.17/i18n/data/bo_in.php b/web/framework/i18n/data/bo_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bo_in.php rename to web/framework/i18n/data/bo_in.php diff --git a/web/framework-1.1.17/i18n/data/br.php b/web/framework/i18n/data/br.php similarity index 100% rename from web/framework-1.1.17/i18n/data/br.php rename to web/framework/i18n/data/br.php diff --git a/web/framework-1.1.17/i18n/data/br_fr.php b/web/framework/i18n/data/br_fr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/br_fr.php rename to web/framework/i18n/data/br_fr.php diff --git a/web/framework-1.1.17/i18n/data/brx.php b/web/framework/i18n/data/brx.php similarity index 100% rename from web/framework-1.1.17/i18n/data/brx.php rename to web/framework/i18n/data/brx.php diff --git a/web/framework-1.1.17/i18n/data/brx_in.php b/web/framework/i18n/data/brx_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/brx_in.php rename to web/framework/i18n/data/brx_in.php diff --git a/web/framework-1.1.17/i18n/data/bs.php b/web/framework/i18n/data/bs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bs.php rename to web/framework/i18n/data/bs.php diff --git a/web/framework-1.1.17/i18n/data/bs_ba.php b/web/framework/i18n/data/bs_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bs_ba.php rename to web/framework/i18n/data/bs_ba.php diff --git a/web/framework-1.1.17/i18n/data/bs_cyrl.php b/web/framework/i18n/data/bs_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bs_cyrl.php rename to web/framework/i18n/data/bs_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/bs_cyrl_ba.php b/web/framework/i18n/data/bs_cyrl_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bs_cyrl_ba.php rename to web/framework/i18n/data/bs_cyrl_ba.php diff --git a/web/framework-1.1.17/i18n/data/bs_latn.php b/web/framework/i18n/data/bs_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bs_latn.php rename to web/framework/i18n/data/bs_latn.php diff --git a/web/framework-1.1.17/i18n/data/bs_latn_ba.php b/web/framework/i18n/data/bs_latn_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/bs_latn_ba.php rename to web/framework/i18n/data/bs_latn_ba.php diff --git a/web/framework-1.1.17/i18n/data/byn.php b/web/framework/i18n/data/byn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/byn.php rename to web/framework/i18n/data/byn.php diff --git a/web/framework-1.1.17/i18n/data/byn_er.php b/web/framework/i18n/data/byn_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/byn_er.php rename to web/framework/i18n/data/byn_er.php diff --git a/web/framework-1.1.17/i18n/data/ca.php b/web/framework/i18n/data/ca.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ca.php rename to web/framework/i18n/data/ca.php diff --git a/web/framework-1.1.17/i18n/data/ca_ad.php b/web/framework/i18n/data/ca_ad.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ca_ad.php rename to web/framework/i18n/data/ca_ad.php diff --git a/web/framework-1.1.17/i18n/data/ca_es.php b/web/framework/i18n/data/ca_es.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ca_es.php rename to web/framework/i18n/data/ca_es.php diff --git a/web/framework-1.1.17/i18n/data/cch.php b/web/framework/i18n/data/cch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cch.php rename to web/framework/i18n/data/cch.php diff --git a/web/framework-1.1.17/i18n/data/cch_ng.php b/web/framework/i18n/data/cch_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cch_ng.php rename to web/framework/i18n/data/cch_ng.php diff --git a/web/framework-1.1.17/i18n/data/cgg.php b/web/framework/i18n/data/cgg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cgg.php rename to web/framework/i18n/data/cgg.php diff --git a/web/framework-1.1.17/i18n/data/cgg_ug.php b/web/framework/i18n/data/cgg_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cgg_ug.php rename to web/framework/i18n/data/cgg_ug.php diff --git a/web/framework-1.1.17/i18n/data/chr.php b/web/framework/i18n/data/chr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/chr.php rename to web/framework/i18n/data/chr.php diff --git a/web/framework-1.1.17/i18n/data/chr_us.php b/web/framework/i18n/data/chr_us.php similarity index 100% rename from web/framework-1.1.17/i18n/data/chr_us.php rename to web/framework/i18n/data/chr_us.php diff --git a/web/framework-1.1.17/i18n/data/cs.php b/web/framework/i18n/data/cs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cs.php rename to web/framework/i18n/data/cs.php diff --git a/web/framework-1.1.17/i18n/data/cs_cz.php b/web/framework/i18n/data/cs_cz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cs_cz.php rename to web/framework/i18n/data/cs_cz.php diff --git a/web/framework-1.1.17/i18n/data/cy.php b/web/framework/i18n/data/cy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cy.php rename to web/framework/i18n/data/cy.php diff --git a/web/framework-1.1.17/i18n/data/cy_gb.php b/web/framework/i18n/data/cy_gb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/cy_gb.php rename to web/framework/i18n/data/cy_gb.php diff --git a/web/framework-1.1.17/i18n/data/da.php b/web/framework/i18n/data/da.php similarity index 100% rename from web/framework-1.1.17/i18n/data/da.php rename to web/framework/i18n/data/da.php diff --git a/web/framework-1.1.17/i18n/data/da_dk.php b/web/framework/i18n/data/da_dk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/da_dk.php rename to web/framework/i18n/data/da_dk.php diff --git a/web/framework-1.1.17/i18n/data/dav.php b/web/framework/i18n/data/dav.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dav.php rename to web/framework/i18n/data/dav.php diff --git a/web/framework-1.1.17/i18n/data/dav_ke.php b/web/framework/i18n/data/dav_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dav_ke.php rename to web/framework/i18n/data/dav_ke.php diff --git a/web/framework-1.1.17/i18n/data/de.php b/web/framework/i18n/data/de.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de.php rename to web/framework/i18n/data/de.php diff --git a/web/framework-1.1.17/i18n/data/de_at.php b/web/framework/i18n/data/de_at.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de_at.php rename to web/framework/i18n/data/de_at.php diff --git a/web/framework-1.1.17/i18n/data/de_be.php b/web/framework/i18n/data/de_be.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de_be.php rename to web/framework/i18n/data/de_be.php diff --git a/web/framework-1.1.17/i18n/data/de_ch.php b/web/framework/i18n/data/de_ch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de_ch.php rename to web/framework/i18n/data/de_ch.php diff --git a/web/framework-1.1.17/i18n/data/de_de.php b/web/framework/i18n/data/de_de.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de_de.php rename to web/framework/i18n/data/de_de.php diff --git a/web/framework-1.1.17/i18n/data/de_li.php b/web/framework/i18n/data/de_li.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de_li.php rename to web/framework/i18n/data/de_li.php diff --git a/web/framework-1.1.17/i18n/data/de_lu.php b/web/framework/i18n/data/de_lu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/de_lu.php rename to web/framework/i18n/data/de_lu.php diff --git a/web/framework-1.1.17/i18n/data/dje.php b/web/framework/i18n/data/dje.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dje.php rename to web/framework/i18n/data/dje.php diff --git a/web/framework-1.1.17/i18n/data/dje_ne.php b/web/framework/i18n/data/dje_ne.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dje_ne.php rename to web/framework/i18n/data/dje_ne.php diff --git a/web/framework-1.1.17/i18n/data/dua.php b/web/framework/i18n/data/dua.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dua.php rename to web/framework/i18n/data/dua.php diff --git a/web/framework-1.1.17/i18n/data/dua_cm.php b/web/framework/i18n/data/dua_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dua_cm.php rename to web/framework/i18n/data/dua_cm.php diff --git a/web/framework-1.1.17/i18n/data/dv.php b/web/framework/i18n/data/dv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dv.php rename to web/framework/i18n/data/dv.php diff --git a/web/framework-1.1.17/i18n/data/dv_mv.php b/web/framework/i18n/data/dv_mv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dv_mv.php rename to web/framework/i18n/data/dv_mv.php diff --git a/web/framework-1.1.17/i18n/data/dyo.php b/web/framework/i18n/data/dyo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dyo.php rename to web/framework/i18n/data/dyo.php diff --git a/web/framework-1.1.17/i18n/data/dyo_sn.php b/web/framework/i18n/data/dyo_sn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dyo_sn.php rename to web/framework/i18n/data/dyo_sn.php diff --git a/web/framework-1.1.17/i18n/data/dz.php b/web/framework/i18n/data/dz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dz.php rename to web/framework/i18n/data/dz.php diff --git a/web/framework-1.1.17/i18n/data/dz_bt.php b/web/framework/i18n/data/dz_bt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/dz_bt.php rename to web/framework/i18n/data/dz_bt.php diff --git a/web/framework-1.1.17/i18n/data/ebu.php b/web/framework/i18n/data/ebu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ebu.php rename to web/framework/i18n/data/ebu.php diff --git a/web/framework-1.1.17/i18n/data/ebu_ke.php b/web/framework/i18n/data/ebu_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ebu_ke.php rename to web/framework/i18n/data/ebu_ke.php diff --git a/web/framework-1.1.17/i18n/data/ee.php b/web/framework/i18n/data/ee.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ee.php rename to web/framework/i18n/data/ee.php diff --git a/web/framework-1.1.17/i18n/data/ee_gh.php b/web/framework/i18n/data/ee_gh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ee_gh.php rename to web/framework/i18n/data/ee_gh.php diff --git a/web/framework-1.1.17/i18n/data/ee_tg.php b/web/framework/i18n/data/ee_tg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ee_tg.php rename to web/framework/i18n/data/ee_tg.php diff --git a/web/framework-1.1.17/i18n/data/el.php b/web/framework/i18n/data/el.php similarity index 100% rename from web/framework-1.1.17/i18n/data/el.php rename to web/framework/i18n/data/el.php diff --git a/web/framework-1.1.17/i18n/data/el_cy.php b/web/framework/i18n/data/el_cy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/el_cy.php rename to web/framework/i18n/data/el_cy.php diff --git a/web/framework-1.1.17/i18n/data/el_gr.php b/web/framework/i18n/data/el_gr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/el_gr.php rename to web/framework/i18n/data/el_gr.php diff --git a/web/framework-1.1.17/i18n/data/el_polyton.php b/web/framework/i18n/data/el_polyton.php similarity index 100% rename from web/framework-1.1.17/i18n/data/el_polyton.php rename to web/framework/i18n/data/el_polyton.php diff --git a/web/framework-1.1.17/i18n/data/en.php b/web/framework/i18n/data/en.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en.php rename to web/framework/i18n/data/en.php diff --git a/web/framework-1.1.17/i18n/data/en_150.php b/web/framework/i18n/data/en_150.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_150.php rename to web/framework/i18n/data/en_150.php diff --git a/web/framework-1.1.17/i18n/data/en_ag.php b/web/framework/i18n/data/en_ag.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ag.php rename to web/framework/i18n/data/en_ag.php diff --git a/web/framework-1.1.17/i18n/data/en_as.php b/web/framework/i18n/data/en_as.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_as.php rename to web/framework/i18n/data/en_as.php diff --git a/web/framework-1.1.17/i18n/data/en_au.php b/web/framework/i18n/data/en_au.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_au.php rename to web/framework/i18n/data/en_au.php diff --git a/web/framework-1.1.17/i18n/data/en_bb.php b/web/framework/i18n/data/en_bb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_bb.php rename to web/framework/i18n/data/en_bb.php diff --git a/web/framework-1.1.17/i18n/data/en_be.php b/web/framework/i18n/data/en_be.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_be.php rename to web/framework/i18n/data/en_be.php diff --git a/web/framework-1.1.17/i18n/data/en_bm.php b/web/framework/i18n/data/en_bm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_bm.php rename to web/framework/i18n/data/en_bm.php diff --git a/web/framework-1.1.17/i18n/data/en_bs.php b/web/framework/i18n/data/en_bs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_bs.php rename to web/framework/i18n/data/en_bs.php diff --git a/web/framework-1.1.17/i18n/data/en_bw.php b/web/framework/i18n/data/en_bw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_bw.php rename to web/framework/i18n/data/en_bw.php diff --git a/web/framework-1.1.17/i18n/data/en_bz.php b/web/framework/i18n/data/en_bz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_bz.php rename to web/framework/i18n/data/en_bz.php diff --git a/web/framework-1.1.17/i18n/data/en_ca.php b/web/framework/i18n/data/en_ca.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ca.php rename to web/framework/i18n/data/en_ca.php diff --git a/web/framework-1.1.17/i18n/data/en_cm.php b/web/framework/i18n/data/en_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_cm.php rename to web/framework/i18n/data/en_cm.php diff --git a/web/framework-1.1.17/i18n/data/en_dm.php b/web/framework/i18n/data/en_dm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_dm.php rename to web/framework/i18n/data/en_dm.php diff --git a/web/framework-1.1.17/i18n/data/en_dsrt.php b/web/framework/i18n/data/en_dsrt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_dsrt.php rename to web/framework/i18n/data/en_dsrt.php diff --git a/web/framework-1.1.17/i18n/data/en_dsrt_us.php b/web/framework/i18n/data/en_dsrt_us.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_dsrt_us.php rename to web/framework/i18n/data/en_dsrt_us.php diff --git a/web/framework-1.1.17/i18n/data/en_fj.php b/web/framework/i18n/data/en_fj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_fj.php rename to web/framework/i18n/data/en_fj.php diff --git a/web/framework-1.1.17/i18n/data/en_fm.php b/web/framework/i18n/data/en_fm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_fm.php rename to web/framework/i18n/data/en_fm.php diff --git a/web/framework-1.1.17/i18n/data/en_gb.php b/web/framework/i18n/data/en_gb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gb.php rename to web/framework/i18n/data/en_gb.php diff --git a/web/framework-1.1.17/i18n/data/en_gd.php b/web/framework/i18n/data/en_gd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gd.php rename to web/framework/i18n/data/en_gd.php diff --git a/web/framework-1.1.17/i18n/data/en_gg.php b/web/framework/i18n/data/en_gg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gg.php rename to web/framework/i18n/data/en_gg.php diff --git a/web/framework-1.1.17/i18n/data/en_gh.php b/web/framework/i18n/data/en_gh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gh.php rename to web/framework/i18n/data/en_gh.php diff --git a/web/framework-1.1.17/i18n/data/en_gi.php b/web/framework/i18n/data/en_gi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gi.php rename to web/framework/i18n/data/en_gi.php diff --git a/web/framework-1.1.17/i18n/data/en_gm.php b/web/framework/i18n/data/en_gm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gm.php rename to web/framework/i18n/data/en_gm.php diff --git a/web/framework-1.1.17/i18n/data/en_gu.php b/web/framework/i18n/data/en_gu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gu.php rename to web/framework/i18n/data/en_gu.php diff --git a/web/framework-1.1.17/i18n/data/en_gy.php b/web/framework/i18n/data/en_gy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_gy.php rename to web/framework/i18n/data/en_gy.php diff --git a/web/framework-1.1.17/i18n/data/en_hk.php b/web/framework/i18n/data/en_hk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_hk.php rename to web/framework/i18n/data/en_hk.php diff --git a/web/framework-1.1.17/i18n/data/en_ie.php b/web/framework/i18n/data/en_ie.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ie.php rename to web/framework/i18n/data/en_ie.php diff --git a/web/framework-1.1.17/i18n/data/en_im.php b/web/framework/i18n/data/en_im.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_im.php rename to web/framework/i18n/data/en_im.php diff --git a/web/framework-1.1.17/i18n/data/en_in.php b/web/framework/i18n/data/en_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_in.php rename to web/framework/i18n/data/en_in.php diff --git a/web/framework-1.1.17/i18n/data/en_je.php b/web/framework/i18n/data/en_je.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_je.php rename to web/framework/i18n/data/en_je.php diff --git a/web/framework-1.1.17/i18n/data/en_jm.php b/web/framework/i18n/data/en_jm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_jm.php rename to web/framework/i18n/data/en_jm.php diff --git a/web/framework-1.1.17/i18n/data/en_ke.php b/web/framework/i18n/data/en_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ke.php rename to web/framework/i18n/data/en_ke.php diff --git a/web/framework-1.1.17/i18n/data/en_ki.php b/web/framework/i18n/data/en_ki.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ki.php rename to web/framework/i18n/data/en_ki.php diff --git a/web/framework-1.1.17/i18n/data/en_kn.php b/web/framework/i18n/data/en_kn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_kn.php rename to web/framework/i18n/data/en_kn.php diff --git a/web/framework-1.1.17/i18n/data/en_ky.php b/web/framework/i18n/data/en_ky.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ky.php rename to web/framework/i18n/data/en_ky.php diff --git a/web/framework-1.1.17/i18n/data/en_lc.php b/web/framework/i18n/data/en_lc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_lc.php rename to web/framework/i18n/data/en_lc.php diff --git a/web/framework-1.1.17/i18n/data/en_lr.php b/web/framework/i18n/data/en_lr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_lr.php rename to web/framework/i18n/data/en_lr.php diff --git a/web/framework-1.1.17/i18n/data/en_ls.php b/web/framework/i18n/data/en_ls.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ls.php rename to web/framework/i18n/data/en_ls.php diff --git a/web/framework-1.1.17/i18n/data/en_mg.php b/web/framework/i18n/data/en_mg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_mg.php rename to web/framework/i18n/data/en_mg.php diff --git a/web/framework-1.1.17/i18n/data/en_mh.php b/web/framework/i18n/data/en_mh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_mh.php rename to web/framework/i18n/data/en_mh.php diff --git a/web/framework-1.1.17/i18n/data/en_mp.php b/web/framework/i18n/data/en_mp.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_mp.php rename to web/framework/i18n/data/en_mp.php diff --git a/web/framework-1.1.17/i18n/data/en_mt.php b/web/framework/i18n/data/en_mt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_mt.php rename to web/framework/i18n/data/en_mt.php diff --git a/web/framework-1.1.17/i18n/data/en_mu.php b/web/framework/i18n/data/en_mu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_mu.php rename to web/framework/i18n/data/en_mu.php diff --git a/web/framework-1.1.17/i18n/data/en_mw.php b/web/framework/i18n/data/en_mw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_mw.php rename to web/framework/i18n/data/en_mw.php diff --git a/web/framework-1.1.17/i18n/data/en_na.php b/web/framework/i18n/data/en_na.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_na.php rename to web/framework/i18n/data/en_na.php diff --git a/web/framework-1.1.17/i18n/data/en_ng.php b/web/framework/i18n/data/en_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ng.php rename to web/framework/i18n/data/en_ng.php diff --git a/web/framework-1.1.17/i18n/data/en_nz.php b/web/framework/i18n/data/en_nz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_nz.php rename to web/framework/i18n/data/en_nz.php diff --git a/web/framework-1.1.17/i18n/data/en_pg.php b/web/framework/i18n/data/en_pg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_pg.php rename to web/framework/i18n/data/en_pg.php diff --git a/web/framework-1.1.17/i18n/data/en_ph.php b/web/framework/i18n/data/en_ph.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ph.php rename to web/framework/i18n/data/en_ph.php diff --git a/web/framework-1.1.17/i18n/data/en_pk.php b/web/framework/i18n/data/en_pk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_pk.php rename to web/framework/i18n/data/en_pk.php diff --git a/web/framework-1.1.17/i18n/data/en_pr.php b/web/framework/i18n/data/en_pr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_pr.php rename to web/framework/i18n/data/en_pr.php diff --git a/web/framework-1.1.17/i18n/data/en_pw.php b/web/framework/i18n/data/en_pw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_pw.php rename to web/framework/i18n/data/en_pw.php diff --git a/web/framework-1.1.17/i18n/data/en_sb.php b/web/framework/i18n/data/en_sb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_sb.php rename to web/framework/i18n/data/en_sb.php diff --git a/web/framework-1.1.17/i18n/data/en_sc.php b/web/framework/i18n/data/en_sc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_sc.php rename to web/framework/i18n/data/en_sc.php diff --git a/web/framework-1.1.17/i18n/data/en_sg.php b/web/framework/i18n/data/en_sg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_sg.php rename to web/framework/i18n/data/en_sg.php diff --git a/web/framework-1.1.17/i18n/data/en_shaw.php b/web/framework/i18n/data/en_shaw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_shaw.php rename to web/framework/i18n/data/en_shaw.php diff --git a/web/framework-1.1.17/i18n/data/en_sl.php b/web/framework/i18n/data/en_sl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_sl.php rename to web/framework/i18n/data/en_sl.php diff --git a/web/framework-1.1.17/i18n/data/en_ss.php b/web/framework/i18n/data/en_ss.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ss.php rename to web/framework/i18n/data/en_ss.php diff --git a/web/framework-1.1.17/i18n/data/en_sz.php b/web/framework/i18n/data/en_sz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_sz.php rename to web/framework/i18n/data/en_sz.php diff --git a/web/framework-1.1.17/i18n/data/en_tc.php b/web/framework/i18n/data/en_tc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_tc.php rename to web/framework/i18n/data/en_tc.php diff --git a/web/framework-1.1.17/i18n/data/en_to.php b/web/framework/i18n/data/en_to.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_to.php rename to web/framework/i18n/data/en_to.php diff --git a/web/framework-1.1.17/i18n/data/en_tt.php b/web/framework/i18n/data/en_tt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_tt.php rename to web/framework/i18n/data/en_tt.php diff --git a/web/framework-1.1.17/i18n/data/en_tz.php b/web/framework/i18n/data/en_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_tz.php rename to web/framework/i18n/data/en_tz.php diff --git a/web/framework-1.1.17/i18n/data/en_ug.php b/web/framework/i18n/data/en_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ug.php rename to web/framework/i18n/data/en_ug.php diff --git a/web/framework-1.1.17/i18n/data/en_um.php b/web/framework/i18n/data/en_um.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_um.php rename to web/framework/i18n/data/en_um.php diff --git a/web/framework-1.1.17/i18n/data/en_us.php b/web/framework/i18n/data/en_us.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_us.php rename to web/framework/i18n/data/en_us.php diff --git a/web/framework-1.1.17/i18n/data/en_us_posix.php b/web/framework/i18n/data/en_us_posix.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_us_posix.php rename to web/framework/i18n/data/en_us_posix.php diff --git a/web/framework-1.1.17/i18n/data/en_vc.php b/web/framework/i18n/data/en_vc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_vc.php rename to web/framework/i18n/data/en_vc.php diff --git a/web/framework-1.1.17/i18n/data/en_vg.php b/web/framework/i18n/data/en_vg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_vg.php rename to web/framework/i18n/data/en_vg.php diff --git a/web/framework-1.1.17/i18n/data/en_vi.php b/web/framework/i18n/data/en_vi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_vi.php rename to web/framework/i18n/data/en_vi.php diff --git a/web/framework-1.1.17/i18n/data/en_vu.php b/web/framework/i18n/data/en_vu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_vu.php rename to web/framework/i18n/data/en_vu.php diff --git a/web/framework-1.1.17/i18n/data/en_ws.php b/web/framework/i18n/data/en_ws.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_ws.php rename to web/framework/i18n/data/en_ws.php diff --git a/web/framework-1.1.17/i18n/data/en_za.php b/web/framework/i18n/data/en_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_za.php rename to web/framework/i18n/data/en_za.php diff --git a/web/framework-1.1.17/i18n/data/en_zm.php b/web/framework/i18n/data/en_zm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_zm.php rename to web/framework/i18n/data/en_zm.php diff --git a/web/framework-1.1.17/i18n/data/en_zw.php b/web/framework/i18n/data/en_zw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_zw.php rename to web/framework/i18n/data/en_zw.php diff --git a/web/framework-1.1.17/i18n/data/en_zz.php b/web/framework/i18n/data/en_zz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/en_zz.php rename to web/framework/i18n/data/en_zz.php diff --git a/web/framework-1.1.17/i18n/data/eo.php b/web/framework/i18n/data/eo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/eo.php rename to web/framework/i18n/data/eo.php diff --git a/web/framework-1.1.17/i18n/data/es.php b/web/framework/i18n/data/es.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es.php rename to web/framework/i18n/data/es.php diff --git a/web/framework-1.1.17/i18n/data/es_419.php b/web/framework/i18n/data/es_419.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_419.php rename to web/framework/i18n/data/es_419.php diff --git a/web/framework-1.1.17/i18n/data/es_ar.php b/web/framework/i18n/data/es_ar.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ar.php rename to web/framework/i18n/data/es_ar.php diff --git a/web/framework-1.1.17/i18n/data/es_bo.php b/web/framework/i18n/data/es_bo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_bo.php rename to web/framework/i18n/data/es_bo.php diff --git a/web/framework-1.1.17/i18n/data/es_cl.php b/web/framework/i18n/data/es_cl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_cl.php rename to web/framework/i18n/data/es_cl.php diff --git a/web/framework-1.1.17/i18n/data/es_co.php b/web/framework/i18n/data/es_co.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_co.php rename to web/framework/i18n/data/es_co.php diff --git a/web/framework-1.1.17/i18n/data/es_cr.php b/web/framework/i18n/data/es_cr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_cr.php rename to web/framework/i18n/data/es_cr.php diff --git a/web/framework-1.1.17/i18n/data/es_cu.php b/web/framework/i18n/data/es_cu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_cu.php rename to web/framework/i18n/data/es_cu.php diff --git a/web/framework-1.1.17/i18n/data/es_do.php b/web/framework/i18n/data/es_do.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_do.php rename to web/framework/i18n/data/es_do.php diff --git a/web/framework-1.1.17/i18n/data/es_ea.php b/web/framework/i18n/data/es_ea.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ea.php rename to web/framework/i18n/data/es_ea.php diff --git a/web/framework-1.1.17/i18n/data/es_ec.php b/web/framework/i18n/data/es_ec.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ec.php rename to web/framework/i18n/data/es_ec.php diff --git a/web/framework-1.1.17/i18n/data/es_es.php b/web/framework/i18n/data/es_es.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_es.php rename to web/framework/i18n/data/es_es.php diff --git a/web/framework-1.1.17/i18n/data/es_gq.php b/web/framework/i18n/data/es_gq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_gq.php rename to web/framework/i18n/data/es_gq.php diff --git a/web/framework-1.1.17/i18n/data/es_gt.php b/web/framework/i18n/data/es_gt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_gt.php rename to web/framework/i18n/data/es_gt.php diff --git a/web/framework-1.1.17/i18n/data/es_hn.php b/web/framework/i18n/data/es_hn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_hn.php rename to web/framework/i18n/data/es_hn.php diff --git a/web/framework-1.1.17/i18n/data/es_ic.php b/web/framework/i18n/data/es_ic.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ic.php rename to web/framework/i18n/data/es_ic.php diff --git a/web/framework-1.1.17/i18n/data/es_mx.php b/web/framework/i18n/data/es_mx.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_mx.php rename to web/framework/i18n/data/es_mx.php diff --git a/web/framework-1.1.17/i18n/data/es_ni.php b/web/framework/i18n/data/es_ni.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ni.php rename to web/framework/i18n/data/es_ni.php diff --git a/web/framework-1.1.17/i18n/data/es_pa.php b/web/framework/i18n/data/es_pa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_pa.php rename to web/framework/i18n/data/es_pa.php diff --git a/web/framework-1.1.17/i18n/data/es_pe.php b/web/framework/i18n/data/es_pe.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_pe.php rename to web/framework/i18n/data/es_pe.php diff --git a/web/framework-1.1.17/i18n/data/es_ph.php b/web/framework/i18n/data/es_ph.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ph.php rename to web/framework/i18n/data/es_ph.php diff --git a/web/framework-1.1.17/i18n/data/es_pr.php b/web/framework/i18n/data/es_pr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_pr.php rename to web/framework/i18n/data/es_pr.php diff --git a/web/framework-1.1.17/i18n/data/es_py.php b/web/framework/i18n/data/es_py.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_py.php rename to web/framework/i18n/data/es_py.php diff --git a/web/framework-1.1.17/i18n/data/es_sv.php b/web/framework/i18n/data/es_sv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_sv.php rename to web/framework/i18n/data/es_sv.php diff --git a/web/framework-1.1.17/i18n/data/es_us.php b/web/framework/i18n/data/es_us.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_us.php rename to web/framework/i18n/data/es_us.php diff --git a/web/framework-1.1.17/i18n/data/es_uy.php b/web/framework/i18n/data/es_uy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_uy.php rename to web/framework/i18n/data/es_uy.php diff --git a/web/framework-1.1.17/i18n/data/es_ve.php b/web/framework/i18n/data/es_ve.php similarity index 100% rename from web/framework-1.1.17/i18n/data/es_ve.php rename to web/framework/i18n/data/es_ve.php diff --git a/web/framework-1.1.17/i18n/data/et.php b/web/framework/i18n/data/et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/et.php rename to web/framework/i18n/data/et.php diff --git a/web/framework-1.1.17/i18n/data/et_ee.php b/web/framework/i18n/data/et_ee.php similarity index 100% rename from web/framework-1.1.17/i18n/data/et_ee.php rename to web/framework/i18n/data/et_ee.php diff --git a/web/framework-1.1.17/i18n/data/eu.php b/web/framework/i18n/data/eu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/eu.php rename to web/framework/i18n/data/eu.php diff --git a/web/framework-1.1.17/i18n/data/eu_es.php b/web/framework/i18n/data/eu_es.php similarity index 100% rename from web/framework-1.1.17/i18n/data/eu_es.php rename to web/framework/i18n/data/eu_es.php diff --git a/web/framework-1.1.17/i18n/data/ewo.php b/web/framework/i18n/data/ewo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ewo.php rename to web/framework/i18n/data/ewo.php diff --git a/web/framework-1.1.17/i18n/data/ewo_cm.php b/web/framework/i18n/data/ewo_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ewo_cm.php rename to web/framework/i18n/data/ewo_cm.php diff --git a/web/framework-1.1.17/i18n/data/fa.php b/web/framework/i18n/data/fa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fa.php rename to web/framework/i18n/data/fa.php diff --git a/web/framework-1.1.17/i18n/data/fa_af.php b/web/framework/i18n/data/fa_af.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fa_af.php rename to web/framework/i18n/data/fa_af.php diff --git a/web/framework-1.1.17/i18n/data/fa_ir.php b/web/framework/i18n/data/fa_ir.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fa_ir.php rename to web/framework/i18n/data/fa_ir.php diff --git a/web/framework-1.1.17/i18n/data/ff.php b/web/framework/i18n/data/ff.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ff.php rename to web/framework/i18n/data/ff.php diff --git a/web/framework-1.1.17/i18n/data/ff_sn.php b/web/framework/i18n/data/ff_sn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ff_sn.php rename to web/framework/i18n/data/ff_sn.php diff --git a/web/framework-1.1.17/i18n/data/fi.php b/web/framework/i18n/data/fi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fi.php rename to web/framework/i18n/data/fi.php diff --git a/web/framework-1.1.17/i18n/data/fi_fi.php b/web/framework/i18n/data/fi_fi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fi_fi.php rename to web/framework/i18n/data/fi_fi.php diff --git a/web/framework-1.1.17/i18n/data/fil.php b/web/framework/i18n/data/fil.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fil.php rename to web/framework/i18n/data/fil.php diff --git a/web/framework-1.1.17/i18n/data/fil_ph.php b/web/framework/i18n/data/fil_ph.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fil_ph.php rename to web/framework/i18n/data/fil_ph.php diff --git a/web/framework-1.1.17/i18n/data/fo.php b/web/framework/i18n/data/fo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fo.php rename to web/framework/i18n/data/fo.php diff --git a/web/framework-1.1.17/i18n/data/fo_fo.php b/web/framework/i18n/data/fo_fo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fo_fo.php rename to web/framework/i18n/data/fo_fo.php diff --git a/web/framework-1.1.17/i18n/data/fr.php b/web/framework/i18n/data/fr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr.php rename to web/framework/i18n/data/fr.php diff --git a/web/framework-1.1.17/i18n/data/fr_be.php b/web/framework/i18n/data/fr_be.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_be.php rename to web/framework/i18n/data/fr_be.php diff --git a/web/framework-1.1.17/i18n/data/fr_bf.php b/web/framework/i18n/data/fr_bf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_bf.php rename to web/framework/i18n/data/fr_bf.php diff --git a/web/framework-1.1.17/i18n/data/fr_bi.php b/web/framework/i18n/data/fr_bi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_bi.php rename to web/framework/i18n/data/fr_bi.php diff --git a/web/framework-1.1.17/i18n/data/fr_bj.php b/web/framework/i18n/data/fr_bj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_bj.php rename to web/framework/i18n/data/fr_bj.php diff --git a/web/framework-1.1.17/i18n/data/fr_bl.php b/web/framework/i18n/data/fr_bl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_bl.php rename to web/framework/i18n/data/fr_bl.php diff --git a/web/framework-1.1.17/i18n/data/fr_ca.php b/web/framework/i18n/data/fr_ca.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ca.php rename to web/framework/i18n/data/fr_ca.php diff --git a/web/framework-1.1.17/i18n/data/fr_cd.php b/web/framework/i18n/data/fr_cd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_cd.php rename to web/framework/i18n/data/fr_cd.php diff --git a/web/framework-1.1.17/i18n/data/fr_cf.php b/web/framework/i18n/data/fr_cf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_cf.php rename to web/framework/i18n/data/fr_cf.php diff --git a/web/framework-1.1.17/i18n/data/fr_cg.php b/web/framework/i18n/data/fr_cg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_cg.php rename to web/framework/i18n/data/fr_cg.php diff --git a/web/framework-1.1.17/i18n/data/fr_ch.php b/web/framework/i18n/data/fr_ch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ch.php rename to web/framework/i18n/data/fr_ch.php diff --git a/web/framework-1.1.17/i18n/data/fr_ci.php b/web/framework/i18n/data/fr_ci.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ci.php rename to web/framework/i18n/data/fr_ci.php diff --git a/web/framework-1.1.17/i18n/data/fr_cm.php b/web/framework/i18n/data/fr_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_cm.php rename to web/framework/i18n/data/fr_cm.php diff --git a/web/framework-1.1.17/i18n/data/fr_dj.php b/web/framework/i18n/data/fr_dj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_dj.php rename to web/framework/i18n/data/fr_dj.php diff --git a/web/framework-1.1.17/i18n/data/fr_dz.php b/web/framework/i18n/data/fr_dz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_dz.php rename to web/framework/i18n/data/fr_dz.php diff --git a/web/framework-1.1.17/i18n/data/fr_fr.php b/web/framework/i18n/data/fr_fr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_fr.php rename to web/framework/i18n/data/fr_fr.php diff --git a/web/framework-1.1.17/i18n/data/fr_ga.php b/web/framework/i18n/data/fr_ga.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ga.php rename to web/framework/i18n/data/fr_ga.php diff --git a/web/framework-1.1.17/i18n/data/fr_gf.php b/web/framework/i18n/data/fr_gf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_gf.php rename to web/framework/i18n/data/fr_gf.php diff --git a/web/framework-1.1.17/i18n/data/fr_gn.php b/web/framework/i18n/data/fr_gn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_gn.php rename to web/framework/i18n/data/fr_gn.php diff --git a/web/framework-1.1.17/i18n/data/fr_gp.php b/web/framework/i18n/data/fr_gp.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_gp.php rename to web/framework/i18n/data/fr_gp.php diff --git a/web/framework-1.1.17/i18n/data/fr_gq.php b/web/framework/i18n/data/fr_gq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_gq.php rename to web/framework/i18n/data/fr_gq.php diff --git a/web/framework-1.1.17/i18n/data/fr_ht.php b/web/framework/i18n/data/fr_ht.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ht.php rename to web/framework/i18n/data/fr_ht.php diff --git a/web/framework-1.1.17/i18n/data/fr_km.php b/web/framework/i18n/data/fr_km.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_km.php rename to web/framework/i18n/data/fr_km.php diff --git a/web/framework-1.1.17/i18n/data/fr_lu.php b/web/framework/i18n/data/fr_lu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_lu.php rename to web/framework/i18n/data/fr_lu.php diff --git a/web/framework-1.1.17/i18n/data/fr_ma.php b/web/framework/i18n/data/fr_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ma.php rename to web/framework/i18n/data/fr_ma.php diff --git a/web/framework-1.1.17/i18n/data/fr_mc.php b/web/framework/i18n/data/fr_mc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_mc.php rename to web/framework/i18n/data/fr_mc.php diff --git a/web/framework-1.1.17/i18n/data/fr_mf.php b/web/framework/i18n/data/fr_mf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_mf.php rename to web/framework/i18n/data/fr_mf.php diff --git a/web/framework-1.1.17/i18n/data/fr_mg.php b/web/framework/i18n/data/fr_mg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_mg.php rename to web/framework/i18n/data/fr_mg.php diff --git a/web/framework-1.1.17/i18n/data/fr_ml.php b/web/framework/i18n/data/fr_ml.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ml.php rename to web/framework/i18n/data/fr_ml.php diff --git a/web/framework-1.1.17/i18n/data/fr_mq.php b/web/framework/i18n/data/fr_mq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_mq.php rename to web/framework/i18n/data/fr_mq.php diff --git a/web/framework-1.1.17/i18n/data/fr_mr.php b/web/framework/i18n/data/fr_mr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_mr.php rename to web/framework/i18n/data/fr_mr.php diff --git a/web/framework-1.1.17/i18n/data/fr_mu.php b/web/framework/i18n/data/fr_mu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_mu.php rename to web/framework/i18n/data/fr_mu.php diff --git a/web/framework-1.1.17/i18n/data/fr_nc.php b/web/framework/i18n/data/fr_nc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_nc.php rename to web/framework/i18n/data/fr_nc.php diff --git a/web/framework-1.1.17/i18n/data/fr_ne.php b/web/framework/i18n/data/fr_ne.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_ne.php rename to web/framework/i18n/data/fr_ne.php diff --git a/web/framework-1.1.17/i18n/data/fr_pf.php b/web/framework/i18n/data/fr_pf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_pf.php rename to web/framework/i18n/data/fr_pf.php diff --git a/web/framework-1.1.17/i18n/data/fr_re.php b/web/framework/i18n/data/fr_re.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_re.php rename to web/framework/i18n/data/fr_re.php diff --git a/web/framework-1.1.17/i18n/data/fr_rw.php b/web/framework/i18n/data/fr_rw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_rw.php rename to web/framework/i18n/data/fr_rw.php diff --git a/web/framework-1.1.17/i18n/data/fr_sc.php b/web/framework/i18n/data/fr_sc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_sc.php rename to web/framework/i18n/data/fr_sc.php diff --git a/web/framework-1.1.17/i18n/data/fr_sn.php b/web/framework/i18n/data/fr_sn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_sn.php rename to web/framework/i18n/data/fr_sn.php diff --git a/web/framework-1.1.17/i18n/data/fr_sy.php b/web/framework/i18n/data/fr_sy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_sy.php rename to web/framework/i18n/data/fr_sy.php diff --git a/web/framework-1.1.17/i18n/data/fr_td.php b/web/framework/i18n/data/fr_td.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_td.php rename to web/framework/i18n/data/fr_td.php diff --git a/web/framework-1.1.17/i18n/data/fr_tg.php b/web/framework/i18n/data/fr_tg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_tg.php rename to web/framework/i18n/data/fr_tg.php diff --git a/web/framework-1.1.17/i18n/data/fr_tn.php b/web/framework/i18n/data/fr_tn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_tn.php rename to web/framework/i18n/data/fr_tn.php diff --git a/web/framework-1.1.17/i18n/data/fr_vu.php b/web/framework/i18n/data/fr_vu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_vu.php rename to web/framework/i18n/data/fr_vu.php diff --git a/web/framework-1.1.17/i18n/data/fr_yt.php b/web/framework/i18n/data/fr_yt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fr_yt.php rename to web/framework/i18n/data/fr_yt.php diff --git a/web/framework-1.1.17/i18n/data/fur.php b/web/framework/i18n/data/fur.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fur.php rename to web/framework/i18n/data/fur.php diff --git a/web/framework-1.1.17/i18n/data/fur_it.php b/web/framework/i18n/data/fur_it.php similarity index 100% rename from web/framework-1.1.17/i18n/data/fur_it.php rename to web/framework/i18n/data/fur_it.php diff --git a/web/framework-1.1.17/i18n/data/ga.php b/web/framework/i18n/data/ga.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ga.php rename to web/framework/i18n/data/ga.php diff --git a/web/framework-1.1.17/i18n/data/ga_ie.php b/web/framework/i18n/data/ga_ie.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ga_ie.php rename to web/framework/i18n/data/ga_ie.php diff --git a/web/framework-1.1.17/i18n/data/gaa.php b/web/framework/i18n/data/gaa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gaa.php rename to web/framework/i18n/data/gaa.php diff --git a/web/framework-1.1.17/i18n/data/gaa_gh.php b/web/framework/i18n/data/gaa_gh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gaa_gh.php rename to web/framework/i18n/data/gaa_gh.php diff --git a/web/framework-1.1.17/i18n/data/gd.php b/web/framework/i18n/data/gd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gd.php rename to web/framework/i18n/data/gd.php diff --git a/web/framework-1.1.17/i18n/data/gd_gb.php b/web/framework/i18n/data/gd_gb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gd_gb.php rename to web/framework/i18n/data/gd_gb.php diff --git a/web/framework-1.1.17/i18n/data/gez.php b/web/framework/i18n/data/gez.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gez.php rename to web/framework/i18n/data/gez.php diff --git a/web/framework-1.1.17/i18n/data/gez_er.php b/web/framework/i18n/data/gez_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gez_er.php rename to web/framework/i18n/data/gez_er.php diff --git a/web/framework-1.1.17/i18n/data/gez_et.php b/web/framework/i18n/data/gez_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gez_et.php rename to web/framework/i18n/data/gez_et.php diff --git a/web/framework-1.1.17/i18n/data/gl.php b/web/framework/i18n/data/gl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gl.php rename to web/framework/i18n/data/gl.php diff --git a/web/framework-1.1.17/i18n/data/gl_es.php b/web/framework/i18n/data/gl_es.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gl_es.php rename to web/framework/i18n/data/gl_es.php diff --git a/web/framework-1.1.17/i18n/data/gsw.php b/web/framework/i18n/data/gsw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gsw.php rename to web/framework/i18n/data/gsw.php diff --git a/web/framework-1.1.17/i18n/data/gsw_ch.php b/web/framework/i18n/data/gsw_ch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gsw_ch.php rename to web/framework/i18n/data/gsw_ch.php diff --git a/web/framework-1.1.17/i18n/data/gu.php b/web/framework/i18n/data/gu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gu.php rename to web/framework/i18n/data/gu.php diff --git a/web/framework-1.1.17/i18n/data/gu_in.php b/web/framework/i18n/data/gu_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gu_in.php rename to web/framework/i18n/data/gu_in.php diff --git a/web/framework-1.1.17/i18n/data/guz.php b/web/framework/i18n/data/guz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/guz.php rename to web/framework/i18n/data/guz.php diff --git a/web/framework-1.1.17/i18n/data/guz_ke.php b/web/framework/i18n/data/guz_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/guz_ke.php rename to web/framework/i18n/data/guz_ke.php diff --git a/web/framework-1.1.17/i18n/data/gv.php b/web/framework/i18n/data/gv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gv.php rename to web/framework/i18n/data/gv.php diff --git a/web/framework-1.1.17/i18n/data/gv_gb.php b/web/framework/i18n/data/gv_gb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/gv_gb.php rename to web/framework/i18n/data/gv_gb.php diff --git a/web/framework-1.1.17/i18n/data/ha.php b/web/framework/i18n/data/ha.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha.php rename to web/framework/i18n/data/ha.php diff --git a/web/framework-1.1.17/i18n/data/ha_arab.php b/web/framework/i18n/data/ha_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_arab.php rename to web/framework/i18n/data/ha_arab.php diff --git a/web/framework-1.1.17/i18n/data/ha_arab_ng.php b/web/framework/i18n/data/ha_arab_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_arab_ng.php rename to web/framework/i18n/data/ha_arab_ng.php diff --git a/web/framework-1.1.17/i18n/data/ha_arab_sd.php b/web/framework/i18n/data/ha_arab_sd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_arab_sd.php rename to web/framework/i18n/data/ha_arab_sd.php diff --git a/web/framework-1.1.17/i18n/data/ha_gh.php b/web/framework/i18n/data/ha_gh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_gh.php rename to web/framework/i18n/data/ha_gh.php diff --git a/web/framework-1.1.17/i18n/data/ha_latn.php b/web/framework/i18n/data/ha_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_latn.php rename to web/framework/i18n/data/ha_latn.php diff --git a/web/framework-1.1.17/i18n/data/ha_latn_gh.php b/web/framework/i18n/data/ha_latn_gh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_latn_gh.php rename to web/framework/i18n/data/ha_latn_gh.php diff --git a/web/framework-1.1.17/i18n/data/ha_latn_ne.php b/web/framework/i18n/data/ha_latn_ne.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_latn_ne.php rename to web/framework/i18n/data/ha_latn_ne.php diff --git a/web/framework-1.1.17/i18n/data/ha_latn_ng.php b/web/framework/i18n/data/ha_latn_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_latn_ng.php rename to web/framework/i18n/data/ha_latn_ng.php diff --git a/web/framework-1.1.17/i18n/data/ha_ne.php b/web/framework/i18n/data/ha_ne.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_ne.php rename to web/framework/i18n/data/ha_ne.php diff --git a/web/framework-1.1.17/i18n/data/ha_ng.php b/web/framework/i18n/data/ha_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_ng.php rename to web/framework/i18n/data/ha_ng.php diff --git a/web/framework-1.1.17/i18n/data/ha_sd.php b/web/framework/i18n/data/ha_sd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ha_sd.php rename to web/framework/i18n/data/ha_sd.php diff --git a/web/framework-1.1.17/i18n/data/haw.php b/web/framework/i18n/data/haw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/haw.php rename to web/framework/i18n/data/haw.php diff --git a/web/framework-1.1.17/i18n/data/haw_us.php b/web/framework/i18n/data/haw_us.php similarity index 100% rename from web/framework-1.1.17/i18n/data/haw_us.php rename to web/framework/i18n/data/haw_us.php diff --git a/web/framework-1.1.17/i18n/data/he.php b/web/framework/i18n/data/he.php similarity index 100% rename from web/framework-1.1.17/i18n/data/he.php rename to web/framework/i18n/data/he.php diff --git a/web/framework-1.1.17/i18n/data/he_il.php b/web/framework/i18n/data/he_il.php similarity index 100% rename from web/framework-1.1.17/i18n/data/he_il.php rename to web/framework/i18n/data/he_il.php diff --git a/web/framework-1.1.17/i18n/data/hi.php b/web/framework/i18n/data/hi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hi.php rename to web/framework/i18n/data/hi.php diff --git a/web/framework-1.1.17/i18n/data/hi_in.php b/web/framework/i18n/data/hi_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hi_in.php rename to web/framework/i18n/data/hi_in.php diff --git a/web/framework-1.1.17/i18n/data/hr.php b/web/framework/i18n/data/hr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hr.php rename to web/framework/i18n/data/hr.php diff --git a/web/framework-1.1.17/i18n/data/hr_ba.php b/web/framework/i18n/data/hr_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hr_ba.php rename to web/framework/i18n/data/hr_ba.php diff --git a/web/framework-1.1.17/i18n/data/hr_hr.php b/web/framework/i18n/data/hr_hr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hr_hr.php rename to web/framework/i18n/data/hr_hr.php diff --git a/web/framework-1.1.17/i18n/data/hu.php b/web/framework/i18n/data/hu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hu.php rename to web/framework/i18n/data/hu.php diff --git a/web/framework-1.1.17/i18n/data/hu_hu.php b/web/framework/i18n/data/hu_hu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hu_hu.php rename to web/framework/i18n/data/hu_hu.php diff --git a/web/framework-1.1.17/i18n/data/hy.php b/web/framework/i18n/data/hy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hy.php rename to web/framework/i18n/data/hy.php diff --git a/web/framework-1.1.17/i18n/data/hy_am.php b/web/framework/i18n/data/hy_am.php similarity index 100% rename from web/framework-1.1.17/i18n/data/hy_am.php rename to web/framework/i18n/data/hy_am.php diff --git a/web/framework-1.1.17/i18n/data/ia.php b/web/framework/i18n/data/ia.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ia.php rename to web/framework/i18n/data/ia.php diff --git a/web/framework-1.1.17/i18n/data/ia_fr.php b/web/framework/i18n/data/ia_fr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ia_fr.php rename to web/framework/i18n/data/ia_fr.php diff --git a/web/framework-1.1.17/i18n/data/id.php b/web/framework/i18n/data/id.php similarity index 100% rename from web/framework-1.1.17/i18n/data/id.php rename to web/framework/i18n/data/id.php diff --git a/web/framework-1.1.17/i18n/data/id_id.php b/web/framework/i18n/data/id_id.php similarity index 100% rename from web/framework-1.1.17/i18n/data/id_id.php rename to web/framework/i18n/data/id_id.php diff --git a/web/framework-1.1.17/i18n/data/ig.php b/web/framework/i18n/data/ig.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ig.php rename to web/framework/i18n/data/ig.php diff --git a/web/framework-1.1.17/i18n/data/ig_ng.php b/web/framework/i18n/data/ig_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ig_ng.php rename to web/framework/i18n/data/ig_ng.php diff --git a/web/framework-1.1.17/i18n/data/ii.php b/web/framework/i18n/data/ii.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ii.php rename to web/framework/i18n/data/ii.php diff --git a/web/framework-1.1.17/i18n/data/ii_cn.php b/web/framework/i18n/data/ii_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ii_cn.php rename to web/framework/i18n/data/ii_cn.php diff --git a/web/framework-1.1.17/i18n/data/in.php b/web/framework/i18n/data/in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/in.php rename to web/framework/i18n/data/in.php diff --git a/web/framework-1.1.17/i18n/data/is.php b/web/framework/i18n/data/is.php similarity index 100% rename from web/framework-1.1.17/i18n/data/is.php rename to web/framework/i18n/data/is.php diff --git a/web/framework-1.1.17/i18n/data/is_is.php b/web/framework/i18n/data/is_is.php similarity index 100% rename from web/framework-1.1.17/i18n/data/is_is.php rename to web/framework/i18n/data/is_is.php diff --git a/web/framework-1.1.17/i18n/data/it.php b/web/framework/i18n/data/it.php similarity index 100% rename from web/framework-1.1.17/i18n/data/it.php rename to web/framework/i18n/data/it.php diff --git a/web/framework-1.1.17/i18n/data/it_ch.php b/web/framework/i18n/data/it_ch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/it_ch.php rename to web/framework/i18n/data/it_ch.php diff --git a/web/framework-1.1.17/i18n/data/it_it.php b/web/framework/i18n/data/it_it.php similarity index 100% rename from web/framework-1.1.17/i18n/data/it_it.php rename to web/framework/i18n/data/it_it.php diff --git a/web/framework-1.1.17/i18n/data/it_sm.php b/web/framework/i18n/data/it_sm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/it_sm.php rename to web/framework/i18n/data/it_sm.php diff --git a/web/framework-1.1.17/i18n/data/iu.php b/web/framework/i18n/data/iu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/iu.php rename to web/framework/i18n/data/iu.php diff --git a/web/framework-1.1.17/i18n/data/iw.php b/web/framework/i18n/data/iw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/iw.php rename to web/framework/i18n/data/iw.php diff --git a/web/framework-1.1.17/i18n/data/ja.php b/web/framework/i18n/data/ja.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ja.php rename to web/framework/i18n/data/ja.php diff --git a/web/framework-1.1.17/i18n/data/ja_jp.php b/web/framework/i18n/data/ja_jp.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ja_jp.php rename to web/framework/i18n/data/ja_jp.php diff --git a/web/framework-1.1.17/i18n/data/jgo.php b/web/framework/i18n/data/jgo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/jgo.php rename to web/framework/i18n/data/jgo.php diff --git a/web/framework-1.1.17/i18n/data/jgo_cm.php b/web/framework/i18n/data/jgo_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/jgo_cm.php rename to web/framework/i18n/data/jgo_cm.php diff --git a/web/framework-1.1.17/i18n/data/jmc.php b/web/framework/i18n/data/jmc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/jmc.php rename to web/framework/i18n/data/jmc.php diff --git a/web/framework-1.1.17/i18n/data/jmc_tz.php b/web/framework/i18n/data/jmc_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/jmc_tz.php rename to web/framework/i18n/data/jmc_tz.php diff --git a/web/framework-1.1.17/i18n/data/ka.php b/web/framework/i18n/data/ka.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ka.php rename to web/framework/i18n/data/ka.php diff --git a/web/framework-1.1.17/i18n/data/ka_ge.php b/web/framework/i18n/data/ka_ge.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ka_ge.php rename to web/framework/i18n/data/ka_ge.php diff --git a/web/framework-1.1.17/i18n/data/kab.php b/web/framework/i18n/data/kab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kab.php rename to web/framework/i18n/data/kab.php diff --git a/web/framework-1.1.17/i18n/data/kab_dz.php b/web/framework/i18n/data/kab_dz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kab_dz.php rename to web/framework/i18n/data/kab_dz.php diff --git a/web/framework-1.1.17/i18n/data/kaj.php b/web/framework/i18n/data/kaj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kaj.php rename to web/framework/i18n/data/kaj.php diff --git a/web/framework-1.1.17/i18n/data/kaj_ng.php b/web/framework/i18n/data/kaj_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kaj_ng.php rename to web/framework/i18n/data/kaj_ng.php diff --git a/web/framework-1.1.17/i18n/data/kam.php b/web/framework/i18n/data/kam.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kam.php rename to web/framework/i18n/data/kam.php diff --git a/web/framework-1.1.17/i18n/data/kam_ke.php b/web/framework/i18n/data/kam_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kam_ke.php rename to web/framework/i18n/data/kam_ke.php diff --git a/web/framework-1.1.17/i18n/data/kcg.php b/web/framework/i18n/data/kcg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kcg.php rename to web/framework/i18n/data/kcg.php diff --git a/web/framework-1.1.17/i18n/data/kcg_ng.php b/web/framework/i18n/data/kcg_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kcg_ng.php rename to web/framework/i18n/data/kcg_ng.php diff --git a/web/framework-1.1.17/i18n/data/kde.php b/web/framework/i18n/data/kde.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kde.php rename to web/framework/i18n/data/kde.php diff --git a/web/framework-1.1.17/i18n/data/kde_tz.php b/web/framework/i18n/data/kde_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kde_tz.php rename to web/framework/i18n/data/kde_tz.php diff --git a/web/framework-1.1.17/i18n/data/kea.php b/web/framework/i18n/data/kea.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kea.php rename to web/framework/i18n/data/kea.php diff --git a/web/framework-1.1.17/i18n/data/kea_cv.php b/web/framework/i18n/data/kea_cv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kea_cv.php rename to web/framework/i18n/data/kea_cv.php diff --git a/web/framework-1.1.17/i18n/data/kfo.php b/web/framework/i18n/data/kfo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kfo.php rename to web/framework/i18n/data/kfo.php diff --git a/web/framework-1.1.17/i18n/data/kfo_ci.php b/web/framework/i18n/data/kfo_ci.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kfo_ci.php rename to web/framework/i18n/data/kfo_ci.php diff --git a/web/framework-1.1.17/i18n/data/khq.php b/web/framework/i18n/data/khq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/khq.php rename to web/framework/i18n/data/khq.php diff --git a/web/framework-1.1.17/i18n/data/khq_ml.php b/web/framework/i18n/data/khq_ml.php similarity index 100% rename from web/framework-1.1.17/i18n/data/khq_ml.php rename to web/framework/i18n/data/khq_ml.php diff --git a/web/framework-1.1.17/i18n/data/ki.php b/web/framework/i18n/data/ki.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ki.php rename to web/framework/i18n/data/ki.php diff --git a/web/framework-1.1.17/i18n/data/ki_ke.php b/web/framework/i18n/data/ki_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ki_ke.php rename to web/framework/i18n/data/ki_ke.php diff --git a/web/framework-1.1.17/i18n/data/kk.php b/web/framework/i18n/data/kk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kk.php rename to web/framework/i18n/data/kk.php diff --git a/web/framework-1.1.17/i18n/data/kk_cyrl.php b/web/framework/i18n/data/kk_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kk_cyrl.php rename to web/framework/i18n/data/kk_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/kk_cyrl_kz.php b/web/framework/i18n/data/kk_cyrl_kz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kk_cyrl_kz.php rename to web/framework/i18n/data/kk_cyrl_kz.php diff --git a/web/framework-1.1.17/i18n/data/kk_kz.php b/web/framework/i18n/data/kk_kz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kk_kz.php rename to web/framework/i18n/data/kk_kz.php diff --git a/web/framework-1.1.17/i18n/data/kkj.php b/web/framework/i18n/data/kkj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kkj.php rename to web/framework/i18n/data/kkj.php diff --git a/web/framework-1.1.17/i18n/data/kkj_cm.php b/web/framework/i18n/data/kkj_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kkj_cm.php rename to web/framework/i18n/data/kkj_cm.php diff --git a/web/framework-1.1.17/i18n/data/kl.php b/web/framework/i18n/data/kl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kl.php rename to web/framework/i18n/data/kl.php diff --git a/web/framework-1.1.17/i18n/data/kl_gl.php b/web/framework/i18n/data/kl_gl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kl_gl.php rename to web/framework/i18n/data/kl_gl.php diff --git a/web/framework-1.1.17/i18n/data/kln.php b/web/framework/i18n/data/kln.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kln.php rename to web/framework/i18n/data/kln.php diff --git a/web/framework-1.1.17/i18n/data/kln_ke.php b/web/framework/i18n/data/kln_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kln_ke.php rename to web/framework/i18n/data/kln_ke.php diff --git a/web/framework-1.1.17/i18n/data/km.php b/web/framework/i18n/data/km.php similarity index 100% rename from web/framework-1.1.17/i18n/data/km.php rename to web/framework/i18n/data/km.php diff --git a/web/framework-1.1.17/i18n/data/km_kh.php b/web/framework/i18n/data/km_kh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/km_kh.php rename to web/framework/i18n/data/km_kh.php diff --git a/web/framework-1.1.17/i18n/data/kn.php b/web/framework/i18n/data/kn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kn.php rename to web/framework/i18n/data/kn.php diff --git a/web/framework-1.1.17/i18n/data/kn_in.php b/web/framework/i18n/data/kn_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kn_in.php rename to web/framework/i18n/data/kn_in.php diff --git a/web/framework-1.1.17/i18n/data/ko.php b/web/framework/i18n/data/ko.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ko.php rename to web/framework/i18n/data/ko.php diff --git a/web/framework-1.1.17/i18n/data/ko_kp.php b/web/framework/i18n/data/ko_kp.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ko_kp.php rename to web/framework/i18n/data/ko_kp.php diff --git a/web/framework-1.1.17/i18n/data/ko_kr.php b/web/framework/i18n/data/ko_kr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ko_kr.php rename to web/framework/i18n/data/ko_kr.php diff --git a/web/framework-1.1.17/i18n/data/kok.php b/web/framework/i18n/data/kok.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kok.php rename to web/framework/i18n/data/kok.php diff --git a/web/framework-1.1.17/i18n/data/kok_in.php b/web/framework/i18n/data/kok_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kok_in.php rename to web/framework/i18n/data/kok_in.php diff --git a/web/framework-1.1.17/i18n/data/kpe.php b/web/framework/i18n/data/kpe.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kpe.php rename to web/framework/i18n/data/kpe.php diff --git a/web/framework-1.1.17/i18n/data/kpe_gn.php b/web/framework/i18n/data/kpe_gn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kpe_gn.php rename to web/framework/i18n/data/kpe_gn.php diff --git a/web/framework-1.1.17/i18n/data/kpe_lr.php b/web/framework/i18n/data/kpe_lr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kpe_lr.php rename to web/framework/i18n/data/kpe_lr.php diff --git a/web/framework-1.1.17/i18n/data/ks.php b/web/framework/i18n/data/ks.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ks.php rename to web/framework/i18n/data/ks.php diff --git a/web/framework-1.1.17/i18n/data/ks_arab.php b/web/framework/i18n/data/ks_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ks_arab.php rename to web/framework/i18n/data/ks_arab.php diff --git a/web/framework-1.1.17/i18n/data/ks_arab_in.php b/web/framework/i18n/data/ks_arab_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ks_arab_in.php rename to web/framework/i18n/data/ks_arab_in.php diff --git a/web/framework-1.1.17/i18n/data/ksb.php b/web/framework/i18n/data/ksb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ksb.php rename to web/framework/i18n/data/ksb.php diff --git a/web/framework-1.1.17/i18n/data/ksb_tz.php b/web/framework/i18n/data/ksb_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ksb_tz.php rename to web/framework/i18n/data/ksb_tz.php diff --git a/web/framework-1.1.17/i18n/data/ksf.php b/web/framework/i18n/data/ksf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ksf.php rename to web/framework/i18n/data/ksf.php diff --git a/web/framework-1.1.17/i18n/data/ksf_cm.php b/web/framework/i18n/data/ksf_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ksf_cm.php rename to web/framework/i18n/data/ksf_cm.php diff --git a/web/framework-1.1.17/i18n/data/ksh.php b/web/framework/i18n/data/ksh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ksh.php rename to web/framework/i18n/data/ksh.php diff --git a/web/framework-1.1.17/i18n/data/ksh_de.php b/web/framework/i18n/data/ksh_de.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ksh_de.php rename to web/framework/i18n/data/ksh_de.php diff --git a/web/framework-1.1.17/i18n/data/ku.php b/web/framework/i18n/data/ku.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku.php rename to web/framework/i18n/data/ku.php diff --git a/web/framework-1.1.17/i18n/data/ku_arab.php b/web/framework/i18n/data/ku_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_arab.php rename to web/framework/i18n/data/ku_arab.php diff --git a/web/framework-1.1.17/i18n/data/ku_arab_iq.php b/web/framework/i18n/data/ku_arab_iq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_arab_iq.php rename to web/framework/i18n/data/ku_arab_iq.php diff --git a/web/framework-1.1.17/i18n/data/ku_arab_ir.php b/web/framework/i18n/data/ku_arab_ir.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_arab_ir.php rename to web/framework/i18n/data/ku_arab_ir.php diff --git a/web/framework-1.1.17/i18n/data/ku_iq.php b/web/framework/i18n/data/ku_iq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_iq.php rename to web/framework/i18n/data/ku_iq.php diff --git a/web/framework-1.1.17/i18n/data/ku_ir.php b/web/framework/i18n/data/ku_ir.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_ir.php rename to web/framework/i18n/data/ku_ir.php diff --git a/web/framework-1.1.17/i18n/data/ku_latn.php b/web/framework/i18n/data/ku_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_latn.php rename to web/framework/i18n/data/ku_latn.php diff --git a/web/framework-1.1.17/i18n/data/ku_latn_sy.php b/web/framework/i18n/data/ku_latn_sy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_latn_sy.php rename to web/framework/i18n/data/ku_latn_sy.php diff --git a/web/framework-1.1.17/i18n/data/ku_latn_tr.php b/web/framework/i18n/data/ku_latn_tr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_latn_tr.php rename to web/framework/i18n/data/ku_latn_tr.php diff --git a/web/framework-1.1.17/i18n/data/ku_sy.php b/web/framework/i18n/data/ku_sy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_sy.php rename to web/framework/i18n/data/ku_sy.php diff --git a/web/framework-1.1.17/i18n/data/ku_tr.php b/web/framework/i18n/data/ku_tr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ku_tr.php rename to web/framework/i18n/data/ku_tr.php diff --git a/web/framework-1.1.17/i18n/data/kw.php b/web/framework/i18n/data/kw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kw.php rename to web/framework/i18n/data/kw.php diff --git a/web/framework-1.1.17/i18n/data/kw_gb.php b/web/framework/i18n/data/kw_gb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/kw_gb.php rename to web/framework/i18n/data/kw_gb.php diff --git a/web/framework-1.1.17/i18n/data/ky.php b/web/framework/i18n/data/ky.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ky.php rename to web/framework/i18n/data/ky.php diff --git a/web/framework-1.1.17/i18n/data/ky_kg.php b/web/framework/i18n/data/ky_kg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ky_kg.php rename to web/framework/i18n/data/ky_kg.php diff --git a/web/framework-1.1.17/i18n/data/lag.php b/web/framework/i18n/data/lag.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lag.php rename to web/framework/i18n/data/lag.php diff --git a/web/framework-1.1.17/i18n/data/lag_tz.php b/web/framework/i18n/data/lag_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lag_tz.php rename to web/framework/i18n/data/lag_tz.php diff --git a/web/framework-1.1.17/i18n/data/lg.php b/web/framework/i18n/data/lg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lg.php rename to web/framework/i18n/data/lg.php diff --git a/web/framework-1.1.17/i18n/data/lg_ug.php b/web/framework/i18n/data/lg_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lg_ug.php rename to web/framework/i18n/data/lg_ug.php diff --git a/web/framework-1.1.17/i18n/data/ln.php b/web/framework/i18n/data/ln.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ln.php rename to web/framework/i18n/data/ln.php diff --git a/web/framework-1.1.17/i18n/data/ln_ao.php b/web/framework/i18n/data/ln_ao.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ln_ao.php rename to web/framework/i18n/data/ln_ao.php diff --git a/web/framework-1.1.17/i18n/data/ln_cd.php b/web/framework/i18n/data/ln_cd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ln_cd.php rename to web/framework/i18n/data/ln_cd.php diff --git a/web/framework-1.1.17/i18n/data/ln_cf.php b/web/framework/i18n/data/ln_cf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ln_cf.php rename to web/framework/i18n/data/ln_cf.php diff --git a/web/framework-1.1.17/i18n/data/ln_cg.php b/web/framework/i18n/data/ln_cg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ln_cg.php rename to web/framework/i18n/data/ln_cg.php diff --git a/web/framework-1.1.17/i18n/data/lo.php b/web/framework/i18n/data/lo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lo.php rename to web/framework/i18n/data/lo.php diff --git a/web/framework-1.1.17/i18n/data/lo_la.php b/web/framework/i18n/data/lo_la.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lo_la.php rename to web/framework/i18n/data/lo_la.php diff --git a/web/framework-1.1.17/i18n/data/lt.php b/web/framework/i18n/data/lt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lt.php rename to web/framework/i18n/data/lt.php diff --git a/web/framework-1.1.17/i18n/data/lt_lt.php b/web/framework/i18n/data/lt_lt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lt_lt.php rename to web/framework/i18n/data/lt_lt.php diff --git a/web/framework-1.1.17/i18n/data/lu.php b/web/framework/i18n/data/lu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lu.php rename to web/framework/i18n/data/lu.php diff --git a/web/framework-1.1.17/i18n/data/lu_cd.php b/web/framework/i18n/data/lu_cd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lu_cd.php rename to web/framework/i18n/data/lu_cd.php diff --git a/web/framework-1.1.17/i18n/data/luo.php b/web/framework/i18n/data/luo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/luo.php rename to web/framework/i18n/data/luo.php diff --git a/web/framework-1.1.17/i18n/data/luo_ke.php b/web/framework/i18n/data/luo_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/luo_ke.php rename to web/framework/i18n/data/luo_ke.php diff --git a/web/framework-1.1.17/i18n/data/luy.php b/web/framework/i18n/data/luy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/luy.php rename to web/framework/i18n/data/luy.php diff --git a/web/framework-1.1.17/i18n/data/luy_ke.php b/web/framework/i18n/data/luy_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/luy_ke.php rename to web/framework/i18n/data/luy_ke.php diff --git a/web/framework-1.1.17/i18n/data/lv.php b/web/framework/i18n/data/lv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lv.php rename to web/framework/i18n/data/lv.php diff --git a/web/framework-1.1.17/i18n/data/lv_lv.php b/web/framework/i18n/data/lv_lv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/lv_lv.php rename to web/framework/i18n/data/lv_lv.php diff --git a/web/framework-1.1.17/i18n/data/mas.php b/web/framework/i18n/data/mas.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mas.php rename to web/framework/i18n/data/mas.php diff --git a/web/framework-1.1.17/i18n/data/mas_ke.php b/web/framework/i18n/data/mas_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mas_ke.php rename to web/framework/i18n/data/mas_ke.php diff --git a/web/framework-1.1.17/i18n/data/mas_tz.php b/web/framework/i18n/data/mas_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mas_tz.php rename to web/framework/i18n/data/mas_tz.php diff --git a/web/framework-1.1.17/i18n/data/mer.php b/web/framework/i18n/data/mer.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mer.php rename to web/framework/i18n/data/mer.php diff --git a/web/framework-1.1.17/i18n/data/mer_ke.php b/web/framework/i18n/data/mer_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mer_ke.php rename to web/framework/i18n/data/mer_ke.php diff --git a/web/framework-1.1.17/i18n/data/mfe.php b/web/framework/i18n/data/mfe.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mfe.php rename to web/framework/i18n/data/mfe.php diff --git a/web/framework-1.1.17/i18n/data/mfe_mu.php b/web/framework/i18n/data/mfe_mu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mfe_mu.php rename to web/framework/i18n/data/mfe_mu.php diff --git a/web/framework-1.1.17/i18n/data/mg.php b/web/framework/i18n/data/mg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mg.php rename to web/framework/i18n/data/mg.php diff --git a/web/framework-1.1.17/i18n/data/mg_mg.php b/web/framework/i18n/data/mg_mg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mg_mg.php rename to web/framework/i18n/data/mg_mg.php diff --git a/web/framework-1.1.17/i18n/data/mgh.php b/web/framework/i18n/data/mgh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mgh.php rename to web/framework/i18n/data/mgh.php diff --git a/web/framework-1.1.17/i18n/data/mgh_mz.php b/web/framework/i18n/data/mgh_mz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mgh_mz.php rename to web/framework/i18n/data/mgh_mz.php diff --git a/web/framework-1.1.17/i18n/data/mgo.php b/web/framework/i18n/data/mgo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mgo.php rename to web/framework/i18n/data/mgo.php diff --git a/web/framework-1.1.17/i18n/data/mgo_cm.php b/web/framework/i18n/data/mgo_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mgo_cm.php rename to web/framework/i18n/data/mgo_cm.php diff --git a/web/framework-1.1.17/i18n/data/mi.php b/web/framework/i18n/data/mi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mi.php rename to web/framework/i18n/data/mi.php diff --git a/web/framework-1.1.17/i18n/data/mi_nz.php b/web/framework/i18n/data/mi_nz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mi_nz.php rename to web/framework/i18n/data/mi_nz.php diff --git a/web/framework-1.1.17/i18n/data/mk.php b/web/framework/i18n/data/mk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mk.php rename to web/framework/i18n/data/mk.php diff --git a/web/framework-1.1.17/i18n/data/mk_mk.php b/web/framework/i18n/data/mk_mk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mk_mk.php rename to web/framework/i18n/data/mk_mk.php diff --git a/web/framework-1.1.17/i18n/data/ml.php b/web/framework/i18n/data/ml.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ml.php rename to web/framework/i18n/data/ml.php diff --git a/web/framework-1.1.17/i18n/data/ml_in.php b/web/framework/i18n/data/ml_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ml_in.php rename to web/framework/i18n/data/ml_in.php diff --git a/web/framework-1.1.17/i18n/data/mn.php b/web/framework/i18n/data/mn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn.php rename to web/framework/i18n/data/mn.php diff --git a/web/framework-1.1.17/i18n/data/mn_cn.php b/web/framework/i18n/data/mn_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn_cn.php rename to web/framework/i18n/data/mn_cn.php diff --git a/web/framework-1.1.17/i18n/data/mn_cyrl.php b/web/framework/i18n/data/mn_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn_cyrl.php rename to web/framework/i18n/data/mn_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/mn_cyrl_mn.php b/web/framework/i18n/data/mn_cyrl_mn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn_cyrl_mn.php rename to web/framework/i18n/data/mn_cyrl_mn.php diff --git a/web/framework-1.1.17/i18n/data/mn_mn.php b/web/framework/i18n/data/mn_mn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn_mn.php rename to web/framework/i18n/data/mn_mn.php diff --git a/web/framework-1.1.17/i18n/data/mn_mong.php b/web/framework/i18n/data/mn_mong.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn_mong.php rename to web/framework/i18n/data/mn_mong.php diff --git a/web/framework-1.1.17/i18n/data/mn_mong_cn.php b/web/framework/i18n/data/mn_mong_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mn_mong_cn.php rename to web/framework/i18n/data/mn_mong_cn.php diff --git a/web/framework-1.1.17/i18n/data/mo.php b/web/framework/i18n/data/mo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mo.php rename to web/framework/i18n/data/mo.php diff --git a/web/framework-1.1.17/i18n/data/mr.php b/web/framework/i18n/data/mr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mr.php rename to web/framework/i18n/data/mr.php diff --git a/web/framework-1.1.17/i18n/data/mr_in.php b/web/framework/i18n/data/mr_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mr_in.php rename to web/framework/i18n/data/mr_in.php diff --git a/web/framework-1.1.17/i18n/data/ms.php b/web/framework/i18n/data/ms.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms.php rename to web/framework/i18n/data/ms.php diff --git a/web/framework-1.1.17/i18n/data/ms_bn.php b/web/framework/i18n/data/ms_bn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms_bn.php rename to web/framework/i18n/data/ms_bn.php diff --git a/web/framework-1.1.17/i18n/data/ms_latn.php b/web/framework/i18n/data/ms_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms_latn.php rename to web/framework/i18n/data/ms_latn.php diff --git a/web/framework-1.1.17/i18n/data/ms_latn_bn.php b/web/framework/i18n/data/ms_latn_bn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms_latn_bn.php rename to web/framework/i18n/data/ms_latn_bn.php diff --git a/web/framework-1.1.17/i18n/data/ms_latn_my.php b/web/framework/i18n/data/ms_latn_my.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms_latn_my.php rename to web/framework/i18n/data/ms_latn_my.php diff --git a/web/framework-1.1.17/i18n/data/ms_latn_sg.php b/web/framework/i18n/data/ms_latn_sg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms_latn_sg.php rename to web/framework/i18n/data/ms_latn_sg.php diff --git a/web/framework-1.1.17/i18n/data/ms_my.php b/web/framework/i18n/data/ms_my.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ms_my.php rename to web/framework/i18n/data/ms_my.php diff --git a/web/framework-1.1.17/i18n/data/mt.php b/web/framework/i18n/data/mt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mt.php rename to web/framework/i18n/data/mt.php diff --git a/web/framework-1.1.17/i18n/data/mt_mt.php b/web/framework/i18n/data/mt_mt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mt_mt.php rename to web/framework/i18n/data/mt_mt.php diff --git a/web/framework-1.1.17/i18n/data/mua.php b/web/framework/i18n/data/mua.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mua.php rename to web/framework/i18n/data/mua.php diff --git a/web/framework-1.1.17/i18n/data/mua_cm.php b/web/framework/i18n/data/mua_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/mua_cm.php rename to web/framework/i18n/data/mua_cm.php diff --git a/web/framework-1.1.17/i18n/data/my.php b/web/framework/i18n/data/my.php similarity index 100% rename from web/framework-1.1.17/i18n/data/my.php rename to web/framework/i18n/data/my.php diff --git a/web/framework-1.1.17/i18n/data/my_mm.php b/web/framework/i18n/data/my_mm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/my_mm.php rename to web/framework/i18n/data/my_mm.php diff --git a/web/framework-1.1.17/i18n/data/naq.php b/web/framework/i18n/data/naq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/naq.php rename to web/framework/i18n/data/naq.php diff --git a/web/framework-1.1.17/i18n/data/naq_na.php b/web/framework/i18n/data/naq_na.php similarity index 100% rename from web/framework-1.1.17/i18n/data/naq_na.php rename to web/framework/i18n/data/naq_na.php diff --git a/web/framework-1.1.17/i18n/data/nb.php b/web/framework/i18n/data/nb.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nb.php rename to web/framework/i18n/data/nb.php diff --git a/web/framework-1.1.17/i18n/data/nb_no.php b/web/framework/i18n/data/nb_no.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nb_no.php rename to web/framework/i18n/data/nb_no.php diff --git a/web/framework-1.1.17/i18n/data/nd.php b/web/framework/i18n/data/nd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nd.php rename to web/framework/i18n/data/nd.php diff --git a/web/framework-1.1.17/i18n/data/nd_zw.php b/web/framework/i18n/data/nd_zw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nd_zw.php rename to web/framework/i18n/data/nd_zw.php diff --git a/web/framework-1.1.17/i18n/data/nds.php b/web/framework/i18n/data/nds.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nds.php rename to web/framework/i18n/data/nds.php diff --git a/web/framework-1.1.17/i18n/data/nds_de.php b/web/framework/i18n/data/nds_de.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nds_de.php rename to web/framework/i18n/data/nds_de.php diff --git a/web/framework-1.1.17/i18n/data/ne.php b/web/framework/i18n/data/ne.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ne.php rename to web/framework/i18n/data/ne.php diff --git a/web/framework-1.1.17/i18n/data/ne_in.php b/web/framework/i18n/data/ne_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ne_in.php rename to web/framework/i18n/data/ne_in.php diff --git a/web/framework-1.1.17/i18n/data/ne_np.php b/web/framework/i18n/data/ne_np.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ne_np.php rename to web/framework/i18n/data/ne_np.php diff --git a/web/framework-1.1.17/i18n/data/nl.php b/web/framework/i18n/data/nl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl.php rename to web/framework/i18n/data/nl.php diff --git a/web/framework-1.1.17/i18n/data/nl_aw.php b/web/framework/i18n/data/nl_aw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl_aw.php rename to web/framework/i18n/data/nl_aw.php diff --git a/web/framework-1.1.17/i18n/data/nl_be.php b/web/framework/i18n/data/nl_be.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl_be.php rename to web/framework/i18n/data/nl_be.php diff --git a/web/framework-1.1.17/i18n/data/nl_cw.php b/web/framework/i18n/data/nl_cw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl_cw.php rename to web/framework/i18n/data/nl_cw.php diff --git a/web/framework-1.1.17/i18n/data/nl_nl.php b/web/framework/i18n/data/nl_nl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl_nl.php rename to web/framework/i18n/data/nl_nl.php diff --git a/web/framework-1.1.17/i18n/data/nl_sr.php b/web/framework/i18n/data/nl_sr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl_sr.php rename to web/framework/i18n/data/nl_sr.php diff --git a/web/framework-1.1.17/i18n/data/nl_sx.php b/web/framework/i18n/data/nl_sx.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nl_sx.php rename to web/framework/i18n/data/nl_sx.php diff --git a/web/framework-1.1.17/i18n/data/nmg.php b/web/framework/i18n/data/nmg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nmg.php rename to web/framework/i18n/data/nmg.php diff --git a/web/framework-1.1.17/i18n/data/nmg_cm.php b/web/framework/i18n/data/nmg_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nmg_cm.php rename to web/framework/i18n/data/nmg_cm.php diff --git a/web/framework-1.1.17/i18n/data/nn.php b/web/framework/i18n/data/nn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nn.php rename to web/framework/i18n/data/nn.php diff --git a/web/framework-1.1.17/i18n/data/nn_no.php b/web/framework/i18n/data/nn_no.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nn_no.php rename to web/framework/i18n/data/nn_no.php diff --git a/web/framework-1.1.17/i18n/data/nnh.php b/web/framework/i18n/data/nnh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nnh.php rename to web/framework/i18n/data/nnh.php diff --git a/web/framework-1.1.17/i18n/data/nnh_cm.php b/web/framework/i18n/data/nnh_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nnh_cm.php rename to web/framework/i18n/data/nnh_cm.php diff --git a/web/framework-1.1.17/i18n/data/no.php b/web/framework/i18n/data/no.php similarity index 100% rename from web/framework-1.1.17/i18n/data/no.php rename to web/framework/i18n/data/no.php diff --git a/web/framework-1.1.17/i18n/data/nr.php b/web/framework/i18n/data/nr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nr.php rename to web/framework/i18n/data/nr.php diff --git a/web/framework-1.1.17/i18n/data/nr_za.php b/web/framework/i18n/data/nr_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nr_za.php rename to web/framework/i18n/data/nr_za.php diff --git a/web/framework-1.1.17/i18n/data/nso.php b/web/framework/i18n/data/nso.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nso.php rename to web/framework/i18n/data/nso.php diff --git a/web/framework-1.1.17/i18n/data/nso_za.php b/web/framework/i18n/data/nso_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nso_za.php rename to web/framework/i18n/data/nso_za.php diff --git a/web/framework-1.1.17/i18n/data/nus.php b/web/framework/i18n/data/nus.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nus.php rename to web/framework/i18n/data/nus.php diff --git a/web/framework-1.1.17/i18n/data/nus_sd.php b/web/framework/i18n/data/nus_sd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nus_sd.php rename to web/framework/i18n/data/nus_sd.php diff --git a/web/framework-1.1.17/i18n/data/ny.php b/web/framework/i18n/data/ny.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ny.php rename to web/framework/i18n/data/ny.php diff --git a/web/framework-1.1.17/i18n/data/ny_mw.php b/web/framework/i18n/data/ny_mw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ny_mw.php rename to web/framework/i18n/data/ny_mw.php diff --git a/web/framework-1.1.17/i18n/data/nyn.php b/web/framework/i18n/data/nyn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nyn.php rename to web/framework/i18n/data/nyn.php diff --git a/web/framework-1.1.17/i18n/data/nyn_ug.php b/web/framework/i18n/data/nyn_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/nyn_ug.php rename to web/framework/i18n/data/nyn_ug.php diff --git a/web/framework-1.1.17/i18n/data/oc.php b/web/framework/i18n/data/oc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/oc.php rename to web/framework/i18n/data/oc.php diff --git a/web/framework-1.1.17/i18n/data/oc_fr.php b/web/framework/i18n/data/oc_fr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/oc_fr.php rename to web/framework/i18n/data/oc_fr.php diff --git a/web/framework-1.1.17/i18n/data/om.php b/web/framework/i18n/data/om.php similarity index 100% rename from web/framework-1.1.17/i18n/data/om.php rename to web/framework/i18n/data/om.php diff --git a/web/framework-1.1.17/i18n/data/om_et.php b/web/framework/i18n/data/om_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/om_et.php rename to web/framework/i18n/data/om_et.php diff --git a/web/framework-1.1.17/i18n/data/om_ke.php b/web/framework/i18n/data/om_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/om_ke.php rename to web/framework/i18n/data/om_ke.php diff --git a/web/framework-1.1.17/i18n/data/or.php b/web/framework/i18n/data/or.php similarity index 100% rename from web/framework-1.1.17/i18n/data/or.php rename to web/framework/i18n/data/or.php diff --git a/web/framework-1.1.17/i18n/data/or_in.php b/web/framework/i18n/data/or_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/or_in.php rename to web/framework/i18n/data/or_in.php diff --git a/web/framework-1.1.17/i18n/data/os.php b/web/framework/i18n/data/os.php similarity index 100% rename from web/framework-1.1.17/i18n/data/os.php rename to web/framework/i18n/data/os.php diff --git a/web/framework-1.1.17/i18n/data/os_ge.php b/web/framework/i18n/data/os_ge.php similarity index 100% rename from web/framework-1.1.17/i18n/data/os_ge.php rename to web/framework/i18n/data/os_ge.php diff --git a/web/framework-1.1.17/i18n/data/os_ru.php b/web/framework/i18n/data/os_ru.php similarity index 100% rename from web/framework-1.1.17/i18n/data/os_ru.php rename to web/framework/i18n/data/os_ru.php diff --git a/web/framework-1.1.17/i18n/data/pa.php b/web/framework/i18n/data/pa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa.php rename to web/framework/i18n/data/pa.php diff --git a/web/framework-1.1.17/i18n/data/pa_arab.php b/web/framework/i18n/data/pa_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa_arab.php rename to web/framework/i18n/data/pa_arab.php diff --git a/web/framework-1.1.17/i18n/data/pa_arab_pk.php b/web/framework/i18n/data/pa_arab_pk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa_arab_pk.php rename to web/framework/i18n/data/pa_arab_pk.php diff --git a/web/framework-1.1.17/i18n/data/pa_guru.php b/web/framework/i18n/data/pa_guru.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa_guru.php rename to web/framework/i18n/data/pa_guru.php diff --git a/web/framework-1.1.17/i18n/data/pa_guru_in.php b/web/framework/i18n/data/pa_guru_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa_guru_in.php rename to web/framework/i18n/data/pa_guru_in.php diff --git a/web/framework-1.1.17/i18n/data/pa_in.php b/web/framework/i18n/data/pa_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa_in.php rename to web/framework/i18n/data/pa_in.php diff --git a/web/framework-1.1.17/i18n/data/pa_pk.php b/web/framework/i18n/data/pa_pk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pa_pk.php rename to web/framework/i18n/data/pa_pk.php diff --git a/web/framework-1.1.17/i18n/data/pl.php b/web/framework/i18n/data/pl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pl.php rename to web/framework/i18n/data/pl.php diff --git a/web/framework-1.1.17/i18n/data/pl_pl.php b/web/framework/i18n/data/pl_pl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pl_pl.php rename to web/framework/i18n/data/pl_pl.php diff --git a/web/framework-1.1.17/i18n/data/ps.php b/web/framework/i18n/data/ps.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ps.php rename to web/framework/i18n/data/ps.php diff --git a/web/framework-1.1.17/i18n/data/ps_af.php b/web/framework/i18n/data/ps_af.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ps_af.php rename to web/framework/i18n/data/ps_af.php diff --git a/web/framework-1.1.17/i18n/data/pt.php b/web/framework/i18n/data/pt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt.php rename to web/framework/i18n/data/pt.php diff --git a/web/framework-1.1.17/i18n/data/pt_ao.php b/web/framework/i18n/data/pt_ao.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_ao.php rename to web/framework/i18n/data/pt_ao.php diff --git a/web/framework-1.1.17/i18n/data/pt_br.php b/web/framework/i18n/data/pt_br.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_br.php rename to web/framework/i18n/data/pt_br.php diff --git a/web/framework-1.1.17/i18n/data/pt_cv.php b/web/framework/i18n/data/pt_cv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_cv.php rename to web/framework/i18n/data/pt_cv.php diff --git a/web/framework-1.1.17/i18n/data/pt_gw.php b/web/framework/i18n/data/pt_gw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_gw.php rename to web/framework/i18n/data/pt_gw.php diff --git a/web/framework-1.1.17/i18n/data/pt_mo.php b/web/framework/i18n/data/pt_mo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_mo.php rename to web/framework/i18n/data/pt_mo.php diff --git a/web/framework-1.1.17/i18n/data/pt_mz.php b/web/framework/i18n/data/pt_mz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_mz.php rename to web/framework/i18n/data/pt_mz.php diff --git a/web/framework-1.1.17/i18n/data/pt_pt.php b/web/framework/i18n/data/pt_pt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_pt.php rename to web/framework/i18n/data/pt_pt.php diff --git a/web/framework-1.1.17/i18n/data/pt_st.php b/web/framework/i18n/data/pt_st.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_st.php rename to web/framework/i18n/data/pt_st.php diff --git a/web/framework-1.1.17/i18n/data/pt_tl.php b/web/framework/i18n/data/pt_tl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/pt_tl.php rename to web/framework/i18n/data/pt_tl.php diff --git a/web/framework-1.1.17/i18n/data/rm.php b/web/framework/i18n/data/rm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rm.php rename to web/framework/i18n/data/rm.php diff --git a/web/framework-1.1.17/i18n/data/rm_ch.php b/web/framework/i18n/data/rm_ch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rm_ch.php rename to web/framework/i18n/data/rm_ch.php diff --git a/web/framework-1.1.17/i18n/data/rn.php b/web/framework/i18n/data/rn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rn.php rename to web/framework/i18n/data/rn.php diff --git a/web/framework-1.1.17/i18n/data/rn_bi.php b/web/framework/i18n/data/rn_bi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rn_bi.php rename to web/framework/i18n/data/rn_bi.php diff --git a/web/framework-1.1.17/i18n/data/ro.php b/web/framework/i18n/data/ro.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ro.php rename to web/framework/i18n/data/ro.php diff --git a/web/framework-1.1.17/i18n/data/ro_md.php b/web/framework/i18n/data/ro_md.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ro_md.php rename to web/framework/i18n/data/ro_md.php diff --git a/web/framework-1.1.17/i18n/data/ro_ro.php b/web/framework/i18n/data/ro_ro.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ro_ro.php rename to web/framework/i18n/data/ro_ro.php diff --git a/web/framework-1.1.17/i18n/data/rof.php b/web/framework/i18n/data/rof.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rof.php rename to web/framework/i18n/data/rof.php diff --git a/web/framework-1.1.17/i18n/data/rof_tz.php b/web/framework/i18n/data/rof_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rof_tz.php rename to web/framework/i18n/data/rof_tz.php diff --git a/web/framework-1.1.17/i18n/data/root.php b/web/framework/i18n/data/root.php similarity index 100% rename from web/framework-1.1.17/i18n/data/root.php rename to web/framework/i18n/data/root.php diff --git a/web/framework-1.1.17/i18n/data/ru.php b/web/framework/i18n/data/ru.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru.php rename to web/framework/i18n/data/ru.php diff --git a/web/framework-1.1.17/i18n/data/ru_by.php b/web/framework/i18n/data/ru_by.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru_by.php rename to web/framework/i18n/data/ru_by.php diff --git a/web/framework-1.1.17/i18n/data/ru_kg.php b/web/framework/i18n/data/ru_kg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru_kg.php rename to web/framework/i18n/data/ru_kg.php diff --git a/web/framework-1.1.17/i18n/data/ru_kz.php b/web/framework/i18n/data/ru_kz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru_kz.php rename to web/framework/i18n/data/ru_kz.php diff --git a/web/framework-1.1.17/i18n/data/ru_md.php b/web/framework/i18n/data/ru_md.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru_md.php rename to web/framework/i18n/data/ru_md.php diff --git a/web/framework-1.1.17/i18n/data/ru_ru.php b/web/framework/i18n/data/ru_ru.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru_ru.php rename to web/framework/i18n/data/ru_ru.php diff --git a/web/framework-1.1.17/i18n/data/ru_ua.php b/web/framework/i18n/data/ru_ua.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ru_ua.php rename to web/framework/i18n/data/ru_ua.php diff --git a/web/framework-1.1.17/i18n/data/rw.php b/web/framework/i18n/data/rw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rw.php rename to web/framework/i18n/data/rw.php diff --git a/web/framework-1.1.17/i18n/data/rw_rw.php b/web/framework/i18n/data/rw_rw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rw_rw.php rename to web/framework/i18n/data/rw_rw.php diff --git a/web/framework-1.1.17/i18n/data/rwk.php b/web/framework/i18n/data/rwk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rwk.php rename to web/framework/i18n/data/rwk.php diff --git a/web/framework-1.1.17/i18n/data/rwk_tz.php b/web/framework/i18n/data/rwk_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/rwk_tz.php rename to web/framework/i18n/data/rwk_tz.php diff --git a/web/framework-1.1.17/i18n/data/sa.php b/web/framework/i18n/data/sa.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sa.php rename to web/framework/i18n/data/sa.php diff --git a/web/framework-1.1.17/i18n/data/sa_in.php b/web/framework/i18n/data/sa_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sa_in.php rename to web/framework/i18n/data/sa_in.php diff --git a/web/framework-1.1.17/i18n/data/sah.php b/web/framework/i18n/data/sah.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sah.php rename to web/framework/i18n/data/sah.php diff --git a/web/framework-1.1.17/i18n/data/sah_ru.php b/web/framework/i18n/data/sah_ru.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sah_ru.php rename to web/framework/i18n/data/sah_ru.php diff --git a/web/framework-1.1.17/i18n/data/saq.php b/web/framework/i18n/data/saq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/saq.php rename to web/framework/i18n/data/saq.php diff --git a/web/framework-1.1.17/i18n/data/saq_ke.php b/web/framework/i18n/data/saq_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/saq_ke.php rename to web/framework/i18n/data/saq_ke.php diff --git a/web/framework-1.1.17/i18n/data/sbp.php b/web/framework/i18n/data/sbp.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sbp.php rename to web/framework/i18n/data/sbp.php diff --git a/web/framework-1.1.17/i18n/data/sbp_tz.php b/web/framework/i18n/data/sbp_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sbp_tz.php rename to web/framework/i18n/data/sbp_tz.php diff --git a/web/framework-1.1.17/i18n/data/se.php b/web/framework/i18n/data/se.php similarity index 100% rename from web/framework-1.1.17/i18n/data/se.php rename to web/framework/i18n/data/se.php diff --git a/web/framework-1.1.17/i18n/data/se_fi.php b/web/framework/i18n/data/se_fi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/se_fi.php rename to web/framework/i18n/data/se_fi.php diff --git a/web/framework-1.1.17/i18n/data/se_no.php b/web/framework/i18n/data/se_no.php similarity index 100% rename from web/framework-1.1.17/i18n/data/se_no.php rename to web/framework/i18n/data/se_no.php diff --git a/web/framework-1.1.17/i18n/data/seh.php b/web/framework/i18n/data/seh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/seh.php rename to web/framework/i18n/data/seh.php diff --git a/web/framework-1.1.17/i18n/data/seh_mz.php b/web/framework/i18n/data/seh_mz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/seh_mz.php rename to web/framework/i18n/data/seh_mz.php diff --git a/web/framework-1.1.17/i18n/data/ses.php b/web/framework/i18n/data/ses.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ses.php rename to web/framework/i18n/data/ses.php diff --git a/web/framework-1.1.17/i18n/data/ses_ml.php b/web/framework/i18n/data/ses_ml.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ses_ml.php rename to web/framework/i18n/data/ses_ml.php diff --git a/web/framework-1.1.17/i18n/data/sg.php b/web/framework/i18n/data/sg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sg.php rename to web/framework/i18n/data/sg.php diff --git a/web/framework-1.1.17/i18n/data/sg_cf.php b/web/framework/i18n/data/sg_cf.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sg_cf.php rename to web/framework/i18n/data/sg_cf.php diff --git a/web/framework-1.1.17/i18n/data/sh.php b/web/framework/i18n/data/sh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sh.php rename to web/framework/i18n/data/sh.php diff --git a/web/framework-1.1.17/i18n/data/sh_ba.php b/web/framework/i18n/data/sh_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sh_ba.php rename to web/framework/i18n/data/sh_ba.php diff --git a/web/framework-1.1.17/i18n/data/sh_cs.php b/web/framework/i18n/data/sh_cs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sh_cs.php rename to web/framework/i18n/data/sh_cs.php diff --git a/web/framework-1.1.17/i18n/data/sh_yu.php b/web/framework/i18n/data/sh_yu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sh_yu.php rename to web/framework/i18n/data/sh_yu.php diff --git a/web/framework-1.1.17/i18n/data/shi.php b/web/framework/i18n/data/shi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/shi.php rename to web/framework/i18n/data/shi.php diff --git a/web/framework-1.1.17/i18n/data/shi_latn.php b/web/framework/i18n/data/shi_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/shi_latn.php rename to web/framework/i18n/data/shi_latn.php diff --git a/web/framework-1.1.17/i18n/data/shi_latn_ma.php b/web/framework/i18n/data/shi_latn_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/shi_latn_ma.php rename to web/framework/i18n/data/shi_latn_ma.php diff --git a/web/framework-1.1.17/i18n/data/shi_ma.php b/web/framework/i18n/data/shi_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/shi_ma.php rename to web/framework/i18n/data/shi_ma.php diff --git a/web/framework-1.1.17/i18n/data/shi_tfng.php b/web/framework/i18n/data/shi_tfng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/shi_tfng.php rename to web/framework/i18n/data/shi_tfng.php diff --git a/web/framework-1.1.17/i18n/data/shi_tfng_ma.php b/web/framework/i18n/data/shi_tfng_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/shi_tfng_ma.php rename to web/framework/i18n/data/shi_tfng_ma.php diff --git a/web/framework-1.1.17/i18n/data/si.php b/web/framework/i18n/data/si.php similarity index 100% rename from web/framework-1.1.17/i18n/data/si.php rename to web/framework/i18n/data/si.php diff --git a/web/framework-1.1.17/i18n/data/si_lk.php b/web/framework/i18n/data/si_lk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/si_lk.php rename to web/framework/i18n/data/si_lk.php diff --git a/web/framework-1.1.17/i18n/data/sid.php b/web/framework/i18n/data/sid.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sid.php rename to web/framework/i18n/data/sid.php diff --git a/web/framework-1.1.17/i18n/data/sid_et.php b/web/framework/i18n/data/sid_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sid_et.php rename to web/framework/i18n/data/sid_et.php diff --git a/web/framework-1.1.17/i18n/data/sk.php b/web/framework/i18n/data/sk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sk.php rename to web/framework/i18n/data/sk.php diff --git a/web/framework-1.1.17/i18n/data/sk_sk.php b/web/framework/i18n/data/sk_sk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sk_sk.php rename to web/framework/i18n/data/sk_sk.php diff --git a/web/framework-1.1.17/i18n/data/sl.php b/web/framework/i18n/data/sl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sl.php rename to web/framework/i18n/data/sl.php diff --git a/web/framework-1.1.17/i18n/data/sl_si.php b/web/framework/i18n/data/sl_si.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sl_si.php rename to web/framework/i18n/data/sl_si.php diff --git a/web/framework-1.1.17/i18n/data/sn.php b/web/framework/i18n/data/sn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sn.php rename to web/framework/i18n/data/sn.php diff --git a/web/framework-1.1.17/i18n/data/sn_zw.php b/web/framework/i18n/data/sn_zw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sn_zw.php rename to web/framework/i18n/data/sn_zw.php diff --git a/web/framework-1.1.17/i18n/data/so.php b/web/framework/i18n/data/so.php similarity index 100% rename from web/framework-1.1.17/i18n/data/so.php rename to web/framework/i18n/data/so.php diff --git a/web/framework-1.1.17/i18n/data/so_dj.php b/web/framework/i18n/data/so_dj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/so_dj.php rename to web/framework/i18n/data/so_dj.php diff --git a/web/framework-1.1.17/i18n/data/so_et.php b/web/framework/i18n/data/so_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/so_et.php rename to web/framework/i18n/data/so_et.php diff --git a/web/framework-1.1.17/i18n/data/so_ke.php b/web/framework/i18n/data/so_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/so_ke.php rename to web/framework/i18n/data/so_ke.php diff --git a/web/framework-1.1.17/i18n/data/so_so.php b/web/framework/i18n/data/so_so.php similarity index 100% rename from web/framework-1.1.17/i18n/data/so_so.php rename to web/framework/i18n/data/so_so.php diff --git a/web/framework-1.1.17/i18n/data/sq.php b/web/framework/i18n/data/sq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sq.php rename to web/framework/i18n/data/sq.php diff --git a/web/framework-1.1.17/i18n/data/sq_al.php b/web/framework/i18n/data/sq_al.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sq_al.php rename to web/framework/i18n/data/sq_al.php diff --git a/web/framework-1.1.17/i18n/data/sq_mk.php b/web/framework/i18n/data/sq_mk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sq_mk.php rename to web/framework/i18n/data/sq_mk.php diff --git a/web/framework-1.1.17/i18n/data/sq_xk.php b/web/framework/i18n/data/sq_xk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sq_xk.php rename to web/framework/i18n/data/sq_xk.php diff --git a/web/framework-1.1.17/i18n/data/sr.php b/web/framework/i18n/data/sr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr.php rename to web/framework/i18n/data/sr.php diff --git a/web/framework-1.1.17/i18n/data/sr_ba.php b/web/framework/i18n/data/sr_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_ba.php rename to web/framework/i18n/data/sr_ba.php diff --git a/web/framework-1.1.17/i18n/data/sr_cs.php b/web/framework/i18n/data/sr_cs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cs.php rename to web/framework/i18n/data/sr_cs.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl.php b/web/framework/i18n/data/sr_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl.php rename to web/framework/i18n/data/sr_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl_ba.php b/web/framework/i18n/data/sr_cyrl_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl_ba.php rename to web/framework/i18n/data/sr_cyrl_ba.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl_cs.php b/web/framework/i18n/data/sr_cyrl_cs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl_cs.php rename to web/framework/i18n/data/sr_cyrl_cs.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl_me.php b/web/framework/i18n/data/sr_cyrl_me.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl_me.php rename to web/framework/i18n/data/sr_cyrl_me.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl_rs.php b/web/framework/i18n/data/sr_cyrl_rs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl_rs.php rename to web/framework/i18n/data/sr_cyrl_rs.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl_xk.php b/web/framework/i18n/data/sr_cyrl_xk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl_xk.php rename to web/framework/i18n/data/sr_cyrl_xk.php diff --git a/web/framework-1.1.17/i18n/data/sr_cyrl_yu.php b/web/framework/i18n/data/sr_cyrl_yu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_cyrl_yu.php rename to web/framework/i18n/data/sr_cyrl_yu.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn.php b/web/framework/i18n/data/sr_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn.php rename to web/framework/i18n/data/sr_latn.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn_ba.php b/web/framework/i18n/data/sr_latn_ba.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn_ba.php rename to web/framework/i18n/data/sr_latn_ba.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn_cs.php b/web/framework/i18n/data/sr_latn_cs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn_cs.php rename to web/framework/i18n/data/sr_latn_cs.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn_me.php b/web/framework/i18n/data/sr_latn_me.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn_me.php rename to web/framework/i18n/data/sr_latn_me.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn_rs.php b/web/framework/i18n/data/sr_latn_rs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn_rs.php rename to web/framework/i18n/data/sr_latn_rs.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn_xk.php b/web/framework/i18n/data/sr_latn_xk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn_xk.php rename to web/framework/i18n/data/sr_latn_xk.php diff --git a/web/framework-1.1.17/i18n/data/sr_latn_yu.php b/web/framework/i18n/data/sr_latn_yu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_latn_yu.php rename to web/framework/i18n/data/sr_latn_yu.php diff --git a/web/framework-1.1.17/i18n/data/sr_me.php b/web/framework/i18n/data/sr_me.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_me.php rename to web/framework/i18n/data/sr_me.php diff --git a/web/framework-1.1.17/i18n/data/sr_rs.php b/web/framework/i18n/data/sr_rs.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_rs.php rename to web/framework/i18n/data/sr_rs.php diff --git a/web/framework-1.1.17/i18n/data/sr_yu.php b/web/framework/i18n/data/sr_yu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sr_yu.php rename to web/framework/i18n/data/sr_yu.php diff --git a/web/framework-1.1.17/i18n/data/ss.php b/web/framework/i18n/data/ss.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ss.php rename to web/framework/i18n/data/ss.php diff --git a/web/framework-1.1.17/i18n/data/ss_sz.php b/web/framework/i18n/data/ss_sz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ss_sz.php rename to web/framework/i18n/data/ss_sz.php diff --git a/web/framework-1.1.17/i18n/data/ss_za.php b/web/framework/i18n/data/ss_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ss_za.php rename to web/framework/i18n/data/ss_za.php diff --git a/web/framework-1.1.17/i18n/data/ssy.php b/web/framework/i18n/data/ssy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ssy.php rename to web/framework/i18n/data/ssy.php diff --git a/web/framework-1.1.17/i18n/data/ssy_er.php b/web/framework/i18n/data/ssy_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ssy_er.php rename to web/framework/i18n/data/ssy_er.php diff --git a/web/framework-1.1.17/i18n/data/st.php b/web/framework/i18n/data/st.php similarity index 100% rename from web/framework-1.1.17/i18n/data/st.php rename to web/framework/i18n/data/st.php diff --git a/web/framework-1.1.17/i18n/data/st_ls.php b/web/framework/i18n/data/st_ls.php similarity index 100% rename from web/framework-1.1.17/i18n/data/st_ls.php rename to web/framework/i18n/data/st_ls.php diff --git a/web/framework-1.1.17/i18n/data/st_za.php b/web/framework/i18n/data/st_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/st_za.php rename to web/framework/i18n/data/st_za.php diff --git a/web/framework-1.1.17/i18n/data/sv.php b/web/framework/i18n/data/sv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sv.php rename to web/framework/i18n/data/sv.php diff --git a/web/framework-1.1.17/i18n/data/sv_ax.php b/web/framework/i18n/data/sv_ax.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sv_ax.php rename to web/framework/i18n/data/sv_ax.php diff --git a/web/framework-1.1.17/i18n/data/sv_fi.php b/web/framework/i18n/data/sv_fi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sv_fi.php rename to web/framework/i18n/data/sv_fi.php diff --git a/web/framework-1.1.17/i18n/data/sv_se.php b/web/framework/i18n/data/sv_se.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sv_se.php rename to web/framework/i18n/data/sv_se.php diff --git a/web/framework-1.1.17/i18n/data/sw.php b/web/framework/i18n/data/sw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sw.php rename to web/framework/i18n/data/sw.php diff --git a/web/framework-1.1.17/i18n/data/sw_ke.php b/web/framework/i18n/data/sw_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sw_ke.php rename to web/framework/i18n/data/sw_ke.php diff --git a/web/framework-1.1.17/i18n/data/sw_tz.php b/web/framework/i18n/data/sw_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sw_tz.php rename to web/framework/i18n/data/sw_tz.php diff --git a/web/framework-1.1.17/i18n/data/sw_ug.php b/web/framework/i18n/data/sw_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/sw_ug.php rename to web/framework/i18n/data/sw_ug.php diff --git a/web/framework-1.1.17/i18n/data/swc.php b/web/framework/i18n/data/swc.php similarity index 100% rename from web/framework-1.1.17/i18n/data/swc.php rename to web/framework/i18n/data/swc.php diff --git a/web/framework-1.1.17/i18n/data/swc_cd.php b/web/framework/i18n/data/swc_cd.php similarity index 100% rename from web/framework-1.1.17/i18n/data/swc_cd.php rename to web/framework/i18n/data/swc_cd.php diff --git a/web/framework-1.1.17/i18n/data/syr.php b/web/framework/i18n/data/syr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/syr.php rename to web/framework/i18n/data/syr.php diff --git a/web/framework-1.1.17/i18n/data/syr_sy.php b/web/framework/i18n/data/syr_sy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/syr_sy.php rename to web/framework/i18n/data/syr_sy.php diff --git a/web/framework-1.1.17/i18n/data/ta.php b/web/framework/i18n/data/ta.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ta.php rename to web/framework/i18n/data/ta.php diff --git a/web/framework-1.1.17/i18n/data/ta_in.php b/web/framework/i18n/data/ta_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ta_in.php rename to web/framework/i18n/data/ta_in.php diff --git a/web/framework-1.1.17/i18n/data/ta_lk.php b/web/framework/i18n/data/ta_lk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ta_lk.php rename to web/framework/i18n/data/ta_lk.php diff --git a/web/framework-1.1.17/i18n/data/ta_my.php b/web/framework/i18n/data/ta_my.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ta_my.php rename to web/framework/i18n/data/ta_my.php diff --git a/web/framework-1.1.17/i18n/data/ta_sg.php b/web/framework/i18n/data/ta_sg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ta_sg.php rename to web/framework/i18n/data/ta_sg.php diff --git a/web/framework-1.1.17/i18n/data/te.php b/web/framework/i18n/data/te.php similarity index 100% rename from web/framework-1.1.17/i18n/data/te.php rename to web/framework/i18n/data/te.php diff --git a/web/framework-1.1.17/i18n/data/te_in.php b/web/framework/i18n/data/te_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/te_in.php rename to web/framework/i18n/data/te_in.php diff --git a/web/framework-1.1.17/i18n/data/teo.php b/web/framework/i18n/data/teo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/teo.php rename to web/framework/i18n/data/teo.php diff --git a/web/framework-1.1.17/i18n/data/teo_ke.php b/web/framework/i18n/data/teo_ke.php similarity index 100% rename from web/framework-1.1.17/i18n/data/teo_ke.php rename to web/framework/i18n/data/teo_ke.php diff --git a/web/framework-1.1.17/i18n/data/teo_ug.php b/web/framework/i18n/data/teo_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/teo_ug.php rename to web/framework/i18n/data/teo_ug.php diff --git a/web/framework-1.1.17/i18n/data/tg.php b/web/framework/i18n/data/tg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tg.php rename to web/framework/i18n/data/tg.php diff --git a/web/framework-1.1.17/i18n/data/tg_cyrl.php b/web/framework/i18n/data/tg_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tg_cyrl.php rename to web/framework/i18n/data/tg_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/tg_cyrl_tj.php b/web/framework/i18n/data/tg_cyrl_tj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tg_cyrl_tj.php rename to web/framework/i18n/data/tg_cyrl_tj.php diff --git a/web/framework-1.1.17/i18n/data/tg_tj.php b/web/framework/i18n/data/tg_tj.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tg_tj.php rename to web/framework/i18n/data/tg_tj.php diff --git a/web/framework-1.1.17/i18n/data/th.php b/web/framework/i18n/data/th.php similarity index 100% rename from web/framework-1.1.17/i18n/data/th.php rename to web/framework/i18n/data/th.php diff --git a/web/framework-1.1.17/i18n/data/th_th.php b/web/framework/i18n/data/th_th.php similarity index 100% rename from web/framework-1.1.17/i18n/data/th_th.php rename to web/framework/i18n/data/th_th.php diff --git a/web/framework-1.1.17/i18n/data/ti.php b/web/framework/i18n/data/ti.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ti.php rename to web/framework/i18n/data/ti.php diff --git a/web/framework-1.1.17/i18n/data/ti_er.php b/web/framework/i18n/data/ti_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ti_er.php rename to web/framework/i18n/data/ti_er.php diff --git a/web/framework-1.1.17/i18n/data/ti_et.php b/web/framework/i18n/data/ti_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ti_et.php rename to web/framework/i18n/data/ti_et.php diff --git a/web/framework-1.1.17/i18n/data/tig.php b/web/framework/i18n/data/tig.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tig.php rename to web/framework/i18n/data/tig.php diff --git a/web/framework-1.1.17/i18n/data/tig_er.php b/web/framework/i18n/data/tig_er.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tig_er.php rename to web/framework/i18n/data/tig_er.php diff --git a/web/framework-1.1.17/i18n/data/tl.php b/web/framework/i18n/data/tl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tl.php rename to web/framework/i18n/data/tl.php diff --git a/web/framework-1.1.17/i18n/data/tl_ph.php b/web/framework/i18n/data/tl_ph.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tl_ph.php rename to web/framework/i18n/data/tl_ph.php diff --git a/web/framework-1.1.17/i18n/data/tn.php b/web/framework/i18n/data/tn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tn.php rename to web/framework/i18n/data/tn.php diff --git a/web/framework-1.1.17/i18n/data/tn_bw.php b/web/framework/i18n/data/tn_bw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tn_bw.php rename to web/framework/i18n/data/tn_bw.php diff --git a/web/framework-1.1.17/i18n/data/tn_za.php b/web/framework/i18n/data/tn_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tn_za.php rename to web/framework/i18n/data/tn_za.php diff --git a/web/framework-1.1.17/i18n/data/to.php b/web/framework/i18n/data/to.php similarity index 100% rename from web/framework-1.1.17/i18n/data/to.php rename to web/framework/i18n/data/to.php diff --git a/web/framework-1.1.17/i18n/data/to_to.php b/web/framework/i18n/data/to_to.php similarity index 100% rename from web/framework-1.1.17/i18n/data/to_to.php rename to web/framework/i18n/data/to_to.php diff --git a/web/framework-1.1.17/i18n/data/tr.php b/web/framework/i18n/data/tr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tr.php rename to web/framework/i18n/data/tr.php diff --git a/web/framework-1.1.17/i18n/data/tr_cy.php b/web/framework/i18n/data/tr_cy.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tr_cy.php rename to web/framework/i18n/data/tr_cy.php diff --git a/web/framework-1.1.17/i18n/data/tr_tr.php b/web/framework/i18n/data/tr_tr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tr_tr.php rename to web/framework/i18n/data/tr_tr.php diff --git a/web/framework-1.1.17/i18n/data/trv.php b/web/framework/i18n/data/trv.php similarity index 100% rename from web/framework-1.1.17/i18n/data/trv.php rename to web/framework/i18n/data/trv.php diff --git a/web/framework-1.1.17/i18n/data/trv_tw.php b/web/framework/i18n/data/trv_tw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/trv_tw.php rename to web/framework/i18n/data/trv_tw.php diff --git a/web/framework-1.1.17/i18n/data/ts.php b/web/framework/i18n/data/ts.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ts.php rename to web/framework/i18n/data/ts.php diff --git a/web/framework-1.1.17/i18n/data/ts_za.php b/web/framework/i18n/data/ts_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ts_za.php rename to web/framework/i18n/data/ts_za.php diff --git a/web/framework-1.1.17/i18n/data/tt.php b/web/framework/i18n/data/tt.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tt.php rename to web/framework/i18n/data/tt.php diff --git a/web/framework-1.1.17/i18n/data/tt_ru.php b/web/framework/i18n/data/tt_ru.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tt_ru.php rename to web/framework/i18n/data/tt_ru.php diff --git a/web/framework-1.1.17/i18n/data/twq.php b/web/framework/i18n/data/twq.php similarity index 100% rename from web/framework-1.1.17/i18n/data/twq.php rename to web/framework/i18n/data/twq.php diff --git a/web/framework-1.1.17/i18n/data/twq_ne.php b/web/framework/i18n/data/twq_ne.php similarity index 100% rename from web/framework-1.1.17/i18n/data/twq_ne.php rename to web/framework/i18n/data/twq_ne.php diff --git a/web/framework-1.1.17/i18n/data/tzm.php b/web/framework/i18n/data/tzm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tzm.php rename to web/framework/i18n/data/tzm.php diff --git a/web/framework-1.1.17/i18n/data/tzm_latn.php b/web/framework/i18n/data/tzm_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tzm_latn.php rename to web/framework/i18n/data/tzm_latn.php diff --git a/web/framework-1.1.17/i18n/data/tzm_latn_ma.php b/web/framework/i18n/data/tzm_latn_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tzm_latn_ma.php rename to web/framework/i18n/data/tzm_latn_ma.php diff --git a/web/framework-1.1.17/i18n/data/tzm_ma.php b/web/framework/i18n/data/tzm_ma.php similarity index 100% rename from web/framework-1.1.17/i18n/data/tzm_ma.php rename to web/framework/i18n/data/tzm_ma.php diff --git a/web/framework-1.1.17/i18n/data/ug.php b/web/framework/i18n/data/ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ug.php rename to web/framework/i18n/data/ug.php diff --git a/web/framework-1.1.17/i18n/data/ug_arab.php b/web/framework/i18n/data/ug_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ug_arab.php rename to web/framework/i18n/data/ug_arab.php diff --git a/web/framework-1.1.17/i18n/data/ug_arab_cn.php b/web/framework/i18n/data/ug_arab_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ug_arab_cn.php rename to web/framework/i18n/data/ug_arab_cn.php diff --git a/web/framework-1.1.17/i18n/data/ug_cn.php b/web/framework/i18n/data/ug_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ug_cn.php rename to web/framework/i18n/data/ug_cn.php diff --git a/web/framework-1.1.17/i18n/data/uk.php b/web/framework/i18n/data/uk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uk.php rename to web/framework/i18n/data/uk.php diff --git a/web/framework-1.1.17/i18n/data/uk_ua.php b/web/framework/i18n/data/uk_ua.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uk_ua.php rename to web/framework/i18n/data/uk_ua.php diff --git a/web/framework-1.1.17/i18n/data/ur.php b/web/framework/i18n/data/ur.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ur.php rename to web/framework/i18n/data/ur.php diff --git a/web/framework-1.1.17/i18n/data/ur_in.php b/web/framework/i18n/data/ur_in.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ur_in.php rename to web/framework/i18n/data/ur_in.php diff --git a/web/framework-1.1.17/i18n/data/ur_pk.php b/web/framework/i18n/data/ur_pk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ur_pk.php rename to web/framework/i18n/data/ur_pk.php diff --git a/web/framework-1.1.17/i18n/data/uz.php b/web/framework/i18n/data/uz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz.php rename to web/framework/i18n/data/uz.php diff --git a/web/framework-1.1.17/i18n/data/uz_af.php b/web/framework/i18n/data/uz_af.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_af.php rename to web/framework/i18n/data/uz_af.php diff --git a/web/framework-1.1.17/i18n/data/uz_arab.php b/web/framework/i18n/data/uz_arab.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_arab.php rename to web/framework/i18n/data/uz_arab.php diff --git a/web/framework-1.1.17/i18n/data/uz_arab_af.php b/web/framework/i18n/data/uz_arab_af.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_arab_af.php rename to web/framework/i18n/data/uz_arab_af.php diff --git a/web/framework-1.1.17/i18n/data/uz_cyrl.php b/web/framework/i18n/data/uz_cyrl.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_cyrl.php rename to web/framework/i18n/data/uz_cyrl.php diff --git a/web/framework-1.1.17/i18n/data/uz_cyrl_uz.php b/web/framework/i18n/data/uz_cyrl_uz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_cyrl_uz.php rename to web/framework/i18n/data/uz_cyrl_uz.php diff --git a/web/framework-1.1.17/i18n/data/uz_latn.php b/web/framework/i18n/data/uz_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_latn.php rename to web/framework/i18n/data/uz_latn.php diff --git a/web/framework-1.1.17/i18n/data/uz_latn_uz.php b/web/framework/i18n/data/uz_latn_uz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_latn_uz.php rename to web/framework/i18n/data/uz_latn_uz.php diff --git a/web/framework-1.1.17/i18n/data/uz_uz.php b/web/framework/i18n/data/uz_uz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/uz_uz.php rename to web/framework/i18n/data/uz_uz.php diff --git a/web/framework-1.1.17/i18n/data/vai.php b/web/framework/i18n/data/vai.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vai.php rename to web/framework/i18n/data/vai.php diff --git a/web/framework-1.1.17/i18n/data/vai_latn.php b/web/framework/i18n/data/vai_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vai_latn.php rename to web/framework/i18n/data/vai_latn.php diff --git a/web/framework-1.1.17/i18n/data/vai_latn_lr.php b/web/framework/i18n/data/vai_latn_lr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vai_latn_lr.php rename to web/framework/i18n/data/vai_latn_lr.php diff --git a/web/framework-1.1.17/i18n/data/vai_vaii.php b/web/framework/i18n/data/vai_vaii.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vai_vaii.php rename to web/framework/i18n/data/vai_vaii.php diff --git a/web/framework-1.1.17/i18n/data/vai_vaii_lr.php b/web/framework/i18n/data/vai_vaii_lr.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vai_vaii_lr.php rename to web/framework/i18n/data/vai_vaii_lr.php diff --git a/web/framework-1.1.17/i18n/data/ve.php b/web/framework/i18n/data/ve.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ve.php rename to web/framework/i18n/data/ve.php diff --git a/web/framework-1.1.17/i18n/data/ve_za.php b/web/framework/i18n/data/ve_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/ve_za.php rename to web/framework/i18n/data/ve_za.php diff --git a/web/framework-1.1.17/i18n/data/vi.php b/web/framework/i18n/data/vi.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vi.php rename to web/framework/i18n/data/vi.php diff --git a/web/framework-1.1.17/i18n/data/vi_vn.php b/web/framework/i18n/data/vi_vn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vi_vn.php rename to web/framework/i18n/data/vi_vn.php diff --git a/web/framework-1.1.17/i18n/data/vo.php b/web/framework/i18n/data/vo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vo.php rename to web/framework/i18n/data/vo.php diff --git a/web/framework-1.1.17/i18n/data/vun.php b/web/framework/i18n/data/vun.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vun.php rename to web/framework/i18n/data/vun.php diff --git a/web/framework-1.1.17/i18n/data/vun_tz.php b/web/framework/i18n/data/vun_tz.php similarity index 100% rename from web/framework-1.1.17/i18n/data/vun_tz.php rename to web/framework/i18n/data/vun_tz.php diff --git a/web/framework-1.1.17/i18n/data/wae.php b/web/framework/i18n/data/wae.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wae.php rename to web/framework/i18n/data/wae.php diff --git a/web/framework-1.1.17/i18n/data/wae_ch.php b/web/framework/i18n/data/wae_ch.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wae_ch.php rename to web/framework/i18n/data/wae_ch.php diff --git a/web/framework-1.1.17/i18n/data/wal.php b/web/framework/i18n/data/wal.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wal.php rename to web/framework/i18n/data/wal.php diff --git a/web/framework-1.1.17/i18n/data/wal_et.php b/web/framework/i18n/data/wal_et.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wal_et.php rename to web/framework/i18n/data/wal_et.php diff --git a/web/framework-1.1.17/i18n/data/wo.php b/web/framework/i18n/data/wo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wo.php rename to web/framework/i18n/data/wo.php diff --git a/web/framework-1.1.17/i18n/data/wo_latn.php b/web/framework/i18n/data/wo_latn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wo_latn.php rename to web/framework/i18n/data/wo_latn.php diff --git a/web/framework-1.1.17/i18n/data/wo_latn_sn.php b/web/framework/i18n/data/wo_latn_sn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wo_latn_sn.php rename to web/framework/i18n/data/wo_latn_sn.php diff --git a/web/framework-1.1.17/i18n/data/wo_sn.php b/web/framework/i18n/data/wo_sn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/wo_sn.php rename to web/framework/i18n/data/wo_sn.php diff --git a/web/framework-1.1.17/i18n/data/xh.php b/web/framework/i18n/data/xh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/xh.php rename to web/framework/i18n/data/xh.php diff --git a/web/framework-1.1.17/i18n/data/xh_za.php b/web/framework/i18n/data/xh_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/xh_za.php rename to web/framework/i18n/data/xh_za.php diff --git a/web/framework-1.1.17/i18n/data/xog.php b/web/framework/i18n/data/xog.php similarity index 100% rename from web/framework-1.1.17/i18n/data/xog.php rename to web/framework/i18n/data/xog.php diff --git a/web/framework-1.1.17/i18n/data/xog_ug.php b/web/framework/i18n/data/xog_ug.php similarity index 100% rename from web/framework-1.1.17/i18n/data/xog_ug.php rename to web/framework/i18n/data/xog_ug.php diff --git a/web/framework-1.1.17/i18n/data/yav.php b/web/framework/i18n/data/yav.php similarity index 100% rename from web/framework-1.1.17/i18n/data/yav.php rename to web/framework/i18n/data/yav.php diff --git a/web/framework-1.1.17/i18n/data/yav_cm.php b/web/framework/i18n/data/yav_cm.php similarity index 100% rename from web/framework-1.1.17/i18n/data/yav_cm.php rename to web/framework/i18n/data/yav_cm.php diff --git a/web/framework-1.1.17/i18n/data/yo.php b/web/framework/i18n/data/yo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/yo.php rename to web/framework/i18n/data/yo.php diff --git a/web/framework-1.1.17/i18n/data/yo_ng.php b/web/framework/i18n/data/yo_ng.php similarity index 100% rename from web/framework-1.1.17/i18n/data/yo_ng.php rename to web/framework/i18n/data/yo_ng.php diff --git a/web/framework-1.1.17/i18n/data/zh.php b/web/framework/i18n/data/zh.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh.php rename to web/framework/i18n/data/zh.php diff --git a/web/framework-1.1.17/i18n/data/zh_cn.php b/web/framework/i18n/data/zh_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_cn.php rename to web/framework/i18n/data/zh_cn.php diff --git a/web/framework-1.1.17/i18n/data/zh_hans.php b/web/framework/i18n/data/zh_hans.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hans.php rename to web/framework/i18n/data/zh_hans.php diff --git a/web/framework-1.1.17/i18n/data/zh_hans_cn.php b/web/framework/i18n/data/zh_hans_cn.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hans_cn.php rename to web/framework/i18n/data/zh_hans_cn.php diff --git a/web/framework-1.1.17/i18n/data/zh_hans_hk.php b/web/framework/i18n/data/zh_hans_hk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hans_hk.php rename to web/framework/i18n/data/zh_hans_hk.php diff --git a/web/framework-1.1.17/i18n/data/zh_hans_mo.php b/web/framework/i18n/data/zh_hans_mo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hans_mo.php rename to web/framework/i18n/data/zh_hans_mo.php diff --git a/web/framework-1.1.17/i18n/data/zh_hans_sg.php b/web/framework/i18n/data/zh_hans_sg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hans_sg.php rename to web/framework/i18n/data/zh_hans_sg.php diff --git a/web/framework-1.1.17/i18n/data/zh_hant.php b/web/framework/i18n/data/zh_hant.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hant.php rename to web/framework/i18n/data/zh_hant.php diff --git a/web/framework-1.1.17/i18n/data/zh_hant_hk.php b/web/framework/i18n/data/zh_hant_hk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hant_hk.php rename to web/framework/i18n/data/zh_hant_hk.php diff --git a/web/framework-1.1.17/i18n/data/zh_hant_mo.php b/web/framework/i18n/data/zh_hant_mo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hant_mo.php rename to web/framework/i18n/data/zh_hant_mo.php diff --git a/web/framework-1.1.17/i18n/data/zh_hant_tw.php b/web/framework/i18n/data/zh_hant_tw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hant_tw.php rename to web/framework/i18n/data/zh_hant_tw.php diff --git a/web/framework-1.1.17/i18n/data/zh_hk.php b/web/framework/i18n/data/zh_hk.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_hk.php rename to web/framework/i18n/data/zh_hk.php diff --git a/web/framework-1.1.17/i18n/data/zh_mo.php b/web/framework/i18n/data/zh_mo.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_mo.php rename to web/framework/i18n/data/zh_mo.php diff --git a/web/framework-1.1.17/i18n/data/zh_sg.php b/web/framework/i18n/data/zh_sg.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_sg.php rename to web/framework/i18n/data/zh_sg.php diff --git a/web/framework-1.1.17/i18n/data/zh_tw.php b/web/framework/i18n/data/zh_tw.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zh_tw.php rename to web/framework/i18n/data/zh_tw.php diff --git a/web/framework-1.1.17/i18n/data/zu.php b/web/framework/i18n/data/zu.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zu.php rename to web/framework/i18n/data/zu.php diff --git a/web/framework-1.1.17/i18n/data/zu_za.php b/web/framework/i18n/data/zu_za.php similarity index 100% rename from web/framework-1.1.17/i18n/data/zu_za.php rename to web/framework/i18n/data/zu_za.php diff --git a/web/framework-1.1.17/i18n/gettext/CGettextFile.php b/web/framework/i18n/gettext/CGettextFile.php similarity index 100% rename from web/framework-1.1.17/i18n/gettext/CGettextFile.php rename to web/framework/i18n/gettext/CGettextFile.php diff --git a/web/framework-1.1.17/i18n/gettext/CGettextMoFile.php b/web/framework/i18n/gettext/CGettextMoFile.php similarity index 99% rename from web/framework-1.1.17/i18n/gettext/CGettextMoFile.php rename to web/framework/i18n/gettext/CGettextMoFile.php index 221af6d..af226f8 100644 --- a/web/framework-1.1.17/i18n/gettext/CGettextMoFile.php +++ b/web/framework/i18n/gettext/CGettextMoFile.php @@ -62,6 +62,7 @@ class CGettextMoFile extends CGettextFile * @param string $file file path * @param string $context message context * @return array message translations (source message => translated message) + * @throws CException */ public function load($file,$context) { @@ -137,6 +138,7 @@ class CGettextMoFile extends CGettextFile * @param array $messages message translations (message id => translated message). * Note if the message has a context, the message id must be prefixed with * the context with chr(4) as the separator. + * @throws CException */ public function save($file,$messages) { diff --git a/web/framework-1.1.17/i18n/gettext/CGettextPoFile.php b/web/framework/i18n/gettext/CGettextPoFile.php similarity index 100% rename from web/framework-1.1.17/i18n/gettext/CGettextPoFile.php rename to web/framework/i18n/gettext/CGettextPoFile.php diff --git a/web/framework-1.1.17/logging/CChainedLogFilter.php b/web/framework/logging/CChainedLogFilter.php similarity index 100% rename from web/framework-1.1.17/logging/CChainedLogFilter.php rename to web/framework/logging/CChainedLogFilter.php diff --git a/web/framework-1.1.17/logging/CDbLogRoute.php b/web/framework/logging/CDbLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CDbLogRoute.php rename to web/framework/logging/CDbLogRoute.php diff --git a/web/framework-1.1.17/logging/CEmailLogRoute.php b/web/framework/logging/CEmailLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CEmailLogRoute.php rename to web/framework/logging/CEmailLogRoute.php diff --git a/web/framework-1.1.17/logging/CFileLogRoute.php b/web/framework/logging/CFileLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CFileLogRoute.php rename to web/framework/logging/CFileLogRoute.php diff --git a/web/framework-1.1.17/logging/CLogFilter.php b/web/framework/logging/CLogFilter.php similarity index 100% rename from web/framework-1.1.17/logging/CLogFilter.php rename to web/framework/logging/CLogFilter.php diff --git a/web/framework-1.1.17/logging/CLogRoute.php b/web/framework/logging/CLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CLogRoute.php rename to web/framework/logging/CLogRoute.php diff --git a/web/framework-1.1.17/logging/CLogRouter.php b/web/framework/logging/CLogRouter.php similarity index 100% rename from web/framework-1.1.17/logging/CLogRouter.php rename to web/framework/logging/CLogRouter.php diff --git a/web/framework-1.1.17/logging/CLogger.php b/web/framework/logging/CLogger.php similarity index 100% rename from web/framework-1.1.17/logging/CLogger.php rename to web/framework/logging/CLogger.php diff --git a/web/framework-1.1.17/logging/CProfileLogRoute.php b/web/framework/logging/CProfileLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CProfileLogRoute.php rename to web/framework/logging/CProfileLogRoute.php diff --git a/web/framework-1.1.17/logging/CSysLogRoute.php b/web/framework/logging/CSysLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CSysLogRoute.php rename to web/framework/logging/CSysLogRoute.php diff --git a/web/framework-1.1.17/logging/CWebLogRoute.php b/web/framework/logging/CWebLogRoute.php similarity index 100% rename from web/framework-1.1.17/logging/CWebLogRoute.php rename to web/framework/logging/CWebLogRoute.php diff --git a/web/framework-1.1.17/messages/ar/yii.php b/web/framework/messages/ar/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ar/yii.php rename to web/framework/messages/ar/yii.php diff --git a/web/framework-1.1.17/messages/ar/zii.php b/web/framework/messages/ar/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ar/zii.php rename to web/framework/messages/ar/zii.php diff --git a/web/framework-1.1.17/messages/bg/yii.php b/web/framework/messages/bg/yii.php similarity index 100% rename from web/framework-1.1.17/messages/bg/yii.php rename to web/framework/messages/bg/yii.php diff --git a/web/framework-1.1.17/messages/bg/zii.php b/web/framework/messages/bg/zii.php similarity index 100% rename from web/framework-1.1.17/messages/bg/zii.php rename to web/framework/messages/bg/zii.php diff --git a/web/framework-1.1.17/messages/bs/yii.php b/web/framework/messages/bs/yii.php similarity index 81% rename from web/framework-1.1.17/messages/bs/yii.php rename to web/framework/messages/bs/yii.php index e177f9d..d41e4d9 100644 --- a/web/framework-1.1.17/messages/bs/yii.php +++ b/web/framework/messages/bs/yii.php @@ -16,56 +16,56 @@ return array ( 0 => '0', 'Virtual attribute {name} must specify "asc" and "desc" options.' => 'Virtualni atribut {name} mora specificirati "asc"- i "desc" opcije.', - '"{path}" is not a valid directory.' => '"{path}" nije važeći direktorijum.', + '"{path}" is not a valid directory.' => '"{path}" nije važeći direktorij.', '< Previous' => '< Prethodna', '<< First' => '<< Prva', - 'Active Record requires a "db" CDbConnection application component.' => 'ActiveRecord zahtjeva "db" CDbConnection aplikacionu komponentu.', + 'Active Record requires a "db" CDbConnection application component.' => 'ActiveRecord zahtjeva "db" CDbConnection aplikacijsku komponentu.', 'Active record "{class}" has an invalid configuration for relation "{relation}". It must specify the relation type, the related active record class and the foreign key.' => 'ActiveRecord-Klasa "{class}" ima nevažeću konfiguraciju za odnos "{relation}". Tipa odnosa, odnosni ActiveRecord i strani kljuÄ (foreign key) moraju biti postavljeni.', - 'Active record "{class}" is trying to select an invalid column "{column}". Note, the column must exist in the table or be an expression with alias.' => 'ActiveRecord "{class}" koristi nevažećo polje "{column}" u SELECT. Pripazite da to polje mora da postoji u tabeli ili da bude alias izraz.', + 'Active record "{class}" is trying to select an invalid column "{column}". Note, the column must exist in the table or be an expression with alias.' => 'ActiveRecord "{class}" koristi nevažeće polje "{column}" u SELECT. Pripazite da to polje mora da postoji u tabeli ili da bude alias izraz.', 'Active record class "{class}" does not have a scope named "{scope}".' => 'ActiveRecord-Klasa "{class}" nema polje imenovano "{scope}".', - 'Alias "{alias}" is invalid. Make sure it points to an existing directory or file.' => 'Alias "{alias}" je nevažan. Molim vas, uspostavite da pokazuje do važećeg direktorija ili fajla.', - 'Application base path "{path}" is not a valid directory.' => 'Glavni put (base path) "{path}" aplikacije je nevažan.', + 'Alias "{alias}" is invalid. Make sure it points to an existing directory or file.' => 'Alias "{alias}" je validan. Molim vas, uspostavite da pokazuje do važećeg direktorija ili fajla.', + 'Application base path "{path}" is not a valid directory.' => 'Glavni put (base path) "{path}" aplikacije nije važeći.', 'Application runtime path "{path}" is not valid. Please make sure it is a directory writable by the Web server process.' => 'Prometni put (runtime path) "{path}" aplikacije je nevažan. Pripazite da proces web servera ima pravo da tamo piÅ¡e.', - 'Authorization item "{item}" has already been assigned to user "{user}".' => 'Element autorizacije "{item}" je već namjenjen "{user}".', + 'Authorization item "{item}" has already been assigned to user "{user}".' => 'Element autorizacije "{item}" je već namjenjen korisniku "{user}".', 'Base path "{path}" is not a valid directory.' => 'Glavni put "{path}" je nevažeći direktorijum.', 'CApcCache requires PHP apc extension to be loaded.' => 'CApcCache zahtjeva da je uÄitan PHP APC dodatak.', - 'CAssetManager.basePath "{path}" is invalid. Please make sure the directory exists and is writable by the Web server process.' => 'CAssetManager.basePath "{path}" je nevažna. Pripazite da postoji taj direktorijum i da proces web servera ima pravo da tamo piÅ¡e.', - 'CCacheHttpSession.cacheID is invalid. Please make sure "{id}" refers to a valid cache application component.' => 'CCacheHttpSession.cacheID je nevažna. Molim vas, uspostavite da se "{id}" odnosi na važeću cache aplikacionu komponentu.', - 'CCaptchaValidator.action "{id}" is invalid. Unable to find such an action in the current controller.' => 'CCaptchaValidator.action "{id}" je nevažna. Nemogu da pronaÄ‘em takvu akciju u trenutnom controlleru.', - 'CDbAuthManager.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbAuthManager.connectionID "{id}" je nevažna. Molim vas, uspostavite da se "{id}" odnosi na važeću aplikacionu komponentu od tipa CDbConnection.', - 'CDbCache.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbCache.connectionID "{id}" je nevažna. Molim vas, uspostavite da se odnosi na važeću aplikacionu komponentu od tipa CDbConnection.', - 'CDbCacheDependency.sql cannot be empty.' => 'CDbCacheDependency.sql nesmije biti prazno.', - 'CDbCommand failed to execute the SQL statement: {error}' => 'CDbCommand nemože da izvrÅ¡i SQL-Statement: {error}', - 'CDbCommand failed to prepare the SQL statement: {error}' => 'CDbCommand nemože da pripremi SQL-Statement: {error}', - 'CDbConnection does not support reading schema for {driver} database.' => 'CDbConnection nepodržava Äitanje Å¡ema za {driver}-datoteke.', - 'CDbConnection failed to open the DB connection: {error}' => 'CDbConnection nemože da uspostavi spoj sa datotekom: {error}', - 'CDbConnection is inactive and cannot perform any DB operations.' => 'CDbConnection nije aktivna i nemože izvrÅ¡avati operacije na datoteki.', - 'CDbConnection.connectionString cannot be empty.' => 'CDbConnection.connectionString nesmije biti prazno.', - 'CDbDataReader cannot rewind. It is a forward-only reader.' => 'CDbDataReader se nemože premotavati. On je forward-only (samo naprijed) ÄitaÄ.', - 'CDbHttpSession.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbHttpSession.connectionID "{id}" je nevažna. Molim vas, uspostavite da se "{id}" odnosi na važeću aplikacionu komponentu od tipa CDbConnection.', - 'CDbLogRoute.connectionID "{id}" does not point to a valid CDbConnection application component.' => 'CDbLogRoute.connectionID "{id}" ne pokazuje na važeću aplikacionu komponentu od tipa Typ CDbConnection.', - 'CDbMessageSource.connectionID is invalid. Please make sure "{id}" refers to a valid database application component.' => 'CDbMessageSource.connectionID je nevažna. Molim vas, uspostavite da se "{id}" odnosi na važeću aplikacionu komponentu od tipa CDbConnection.', - 'CDbTestFixture.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbFixture.connectionID "{id}" je nevažna. Molim vas, uspostavite da se odnosi na važeću aplikacionu komponentu od tipa CDbConnection.', - 'CDbTransaction is inactive and cannot perform commit or roll back operations.' => 'CDbTransaction nije aktivno i nemože da izvrÅ¡i Commit- ili Rollback operaciju.', - 'CDirectoryCacheDependency.directory cannot be empty.' => 'CDirectoryCacheDependency.directory nesmije biti prazno.', - 'CEAcceleratorCache requires PHP eAccelerator extension to be loaded, enabled or compiled with the "--with-eaccelerator-shared-memory" option.' => 'CEAcceleratorCache zahtjeva, da PHP eAccelerator dodatak je uÄitan i aktiviran ili sa kompajlira sa opcijom "--with-eaccelerator-shared-memory".', - 'CFileCacheDependency.fileName cannot be empty.' => 'CFileCacheDependency.fileName nesmije biti prazno.', - 'CFileLogRoute.logPath "{path}" does not point to a valid directory. Make sure the directory exists and is writable by the Web server process.' => 'CFileLogRoute.logPath "{path}" ne pokazuje na važeći direktorijum. Pripazite da postoji taj direktorijum i da proces web servera ima pravo da tamo piÅ¡e.', + 'CAssetManager.basePath "{path}" is invalid. Please make sure the directory exists and is writable by the Web server process.' => 'CAssetManager.basePath "{path}" nije važeća. Pripazite da postoji taj direktorijum i da proces web servera ima pravo da tamo piÅ¡e.', + 'CCacheHttpSession.cacheID is invalid. Please make sure "{id}" refers to a valid cache application component.' => 'CCacheHttpSession.cacheID nije važeća. Molim vas, uspostavite da se "{id}" odnosi na važeću cache aplikacionu komponentu.', + 'CCaptchaValidator.action "{id}" is invalid. Unable to find such an action in the current controller.' => 'CCaptchaValidator.action "{id}" nije važeća. Ne mogu da pronaÄ‘em takvu akciju u trenutnom controlleru.', + 'CDbAuthManager.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbAuthManager.connectionID "{id}" nije važeća. Molimo vas, uspostavite da se "{id}" odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbCache.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbCache.connectionID "{id}" nije važeća. Molimo vas, uspostavite da se odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbCacheDependency.sql cannot be empty.' => 'CDbCacheDependency.sql ne smije biti prazno.', + 'CDbCommand failed to execute the SQL statement: {error}' => 'CDbCommand ne može da izvrÅ¡i SQL-Statement: {error}', + 'CDbCommand failed to prepare the SQL statement: {error}' => 'CDbCommand ne može da pripremi SQL-Statement: {error}', + 'CDbConnection does not support reading schema for {driver} database.' => 'CDbConnection ne podržava Äitanje Å¡ema za {driver}-datoteke.', + 'CDbConnection failed to open the DB connection: {error}' => 'CDbConnection ne može da uspostavi spoj sa datotekom: {error}', + 'CDbConnection is inactive and cannot perform any DB operations.' => 'CDbConnection nije aktivna i ne može izvrÅ¡avati operacije na datoteci.', + 'CDbConnection.connectionString cannot be empty.' => 'CDbConnection.connectionString ne smije biti prazno.', + 'CDbDataReader cannot rewind. It is a forward-only reader.' => 'CDbDataReader se ne može premotavati. On je forward-only (samo naprijed) ÄitaÄ.', + 'CDbHttpSession.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbHttpSession.connectionID "{id}" nije važeća. Molimo vas, uspostavite da se "{id}" odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbLogRoute.connectionID "{id}" does not point to a valid CDbConnection application component.' => 'CDbLogRoute.connectionID "{id}" ne pokazuje na važeću aplikacijsku komponentu od tipa Typ CDbConnection.', + 'CDbMessageSource.connectionID is invalid. Please make sure "{id}" refers to a valid database application component.' => 'CDbMessageSource.connectionID je nevažna. Molimo vas, uspostavite da se "{id}" odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbTestFixture.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbFixture.connectionID "{id}" je nevažeća. Molim vas, uspostavite da se odnosi na važeću aplikacionu komponentu tipa CDbConnection.', + 'CDbTransaction is inactive and cannot perform commit or roll back operations.' => 'CDbTransaction nije aktivno i ne može da izvrÅ¡i Commit- ili Rollback operaciju.', + 'CDirectoryCacheDependency.directory cannot be empty.' => 'CDirectoryCacheDependency.directory ne smije biti prazno.', + 'CEAcceleratorCache requires PHP eAccelerator extension to be loaded, enabled or compiled with the "--with-eaccelerator-shared-memory" option.' => 'CEAcceleratorCache zahtjeva da je PHP eAccelerator dodatak uÄitan i aktiviran ili se kompajlira sa opcijom "--with-eaccelerator-shared-memory".', + 'CFileCacheDependency.fileName cannot be empty.' => 'CFileCacheDependency.fileName ne smije biti prazno.', + 'CFileLogRoute.logPath "{path}" does not point to a valid directory. Make sure the directory exists and is writable by the Web server process.' => 'CFileLogRoute.logPath "{path}" ne pokazuje na nevažeći direktorij. Pripazite da postoji taj direktorij i da proces web servera ima pravo da tamo piÅ¡e.', 'CFilterChain can only take objects implementing the IFilter interface.' => 'CFilterChain smije primiti samo objekte koje implementiraju IFilter-Interface.', - 'CFlexWidget.baseUrl cannot be empty.' => 'CFlexWidget.baseUrl nesmije biti prazno.', - 'CFlexWidget.name cannot be empty.' => 'CFlexWidget.name nesmije biti prazno.', - 'CGlobalStateCacheDependency.stateName cannot be empty.' => 'CGlobalStateCacheDependency.stateName nesmije biti prazno.', + 'CFlexWidget.baseUrl cannot be empty.' => 'CFlexWidget.baseUrl ne smije biti prazno.', + 'CFlexWidget.name cannot be empty.' => 'CFlexWidget.name ne smije biti prazno.', + 'CGlobalStateCacheDependency.stateName cannot be empty.' => 'CGlobalStateCacheDependency.stateName ne smije biti prazno.', 'CHttpCookieCollection can only hold CHttpCookie objects.' => 'CHttpCookieCollection smije da sadrži samo CHttpCookie-Objekte.', 'CHttpRequest is unable to determine the entry script URL.' => 'CHttpRequest ne može da ustanovi URL ulaznog skripta (entry script).', 'CHttpRequest is unable to determine the path info of the request.' => 'CHttpRequest ne može da ustanovi informacije o putu (path info) za tekući zahtjev (request).', 'CHttpRequest is unable to determine the request URI.' => 'CHttpRequest ne može da ustanovi URI za tekući zahtjev (request).', 'CHttpSession.cookieMode can only be "none", "allow" or "only".' => 'CHttpSession.cookieMode može biti jedino "none", "allow" ili "only".', 'CHttpSession.gcProbability "{value}" is invalid. It must be an integer between 0 and 100.' => 'CHttpSession.gcProbability "{value}" je pogreÅ¡an. Mora biti cijeli broj (integer) izmeÄ‘u 0 i 100.', - 'CHttpSession.savePath "{path}" is not a valid directory.' => 'CHttpSession.savePath "{path}" nije ispravan direktorijum.', + 'CHttpSession.savePath "{path}" is not a valid directory.' => 'CHttpSession.savePath "{path}" nije ispravan direktorij.', 'CMemCache server configuration must be an array.' => 'CMemCache server konfiguracija mora biti niz (array)', 'CMemCache server configuration must have "host" value.' => 'CMemCache server konfiguracija mora imati dodjeljenu vrijednost za "host".', 'CMultiFileUpload.name is required.' => 'CMultiFileUpload.name je obavezno.', - 'CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.' => 'CProfileLogRoute je naÅ¡ao nesaglaÅ¡en blok koda "{token}". Budite sigurni da su pozivi Yii::beginProfile() i Yii::endProfile() ispravno ugnježdeni.', + 'CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.' => 'CProfileLogRoute je naÅ¡ao neusaglaÅ¡en blok koda "{token}". Budite sigurni da su pozivi Yii::beginProfile() i Yii::endProfile() ispravno ugnježdeni.', 'CProfileLogRoute.report "{report}" is invalid. Valid values include "summary" and "callstack".' => 'CProfileLogRoute.report "{report}" je pogreÅ¡an. Ispravne vrijednosti ukljuÄuju "summary" i "callstack".', 'CSecurityManager requires PHP mcrypt extension to be loaded in order to use data encryption feature.' => 'CSecurityManager zahtjeva da PHP mcrypt ekstenzija bude ukljuÄena da bi se koristila mogućnost enkripcije podataka.', 'CSecurityManager.encryptionKey cannot be empty.' => 'CSecurityManager.encryptionKey ne može biti prazan.', @@ -87,11 +87,11 @@ return array ( 'Event "{class}.{event}" is attached with an invalid handler "{handler}".' => 'DogaÄ‘aj "{class}.{event}" je zakaÄen za pogreÅ¡an (nevažeći) hendler (handler) "{handler}".', 'Event "{class}.{event}" is not defined.' => 'DogaÄ‘aj (event) "{class}.{event}" nije definisan.', 'Extension path "{path}" does not exist.' => 'Put dodataka (extension path) "{path}" ne postoji.', - 'Failed to write the uploaded file "{file}" to disk.' => 'NeuspjeÅ¡no snimanje podignutog fajla (uploaded file) "{file}" na disk.', - 'File upload was stopped by extension.' => 'Podizanje fajla (file upload) je zaustavljeno od strane ekstenzije.', + 'Failed to write the uploaded file "{file}" to disk.' => 'NeuspjeÅ¡no snimanje uploadovanog fajla (uploaded file) "{file}" na disk.', + 'File upload was stopped by extension.' => 'Upload fajla (file upload) je zaustavljeno od strane ekstenzije.', 'Filter "{filter}" is invalid. Controller "{class}" does have the filter method "filter{filter}".' => 'Filter "{filter}" je pogreÅ¡an. Kontroler "{class}" sadrži filter metod "filter{filter}".', 'Get a new code' => 'Dobavi novi kod', - 'Go to page: ' => 'Do stranice: ', + 'Go to page: ' => 'Idi na stranicu: ', 'Invalid MO file revision: {revision}.' => 'PogreÅ¡na revizija MO fajla: {revision}.', 'Invalid MO file: {file} (magic: {magic}).' => 'PogreÅ¡an (neispravan) MO fajl: {file} (magic: {magic}).', 'Invalid enumerable value "{value}". Please make sure it is among ({enum}).' => 'PogreÅ¡na nabrojiva vrijednost "{value}". Molim vas, budite sigurni da je iz ({enum}).', @@ -101,19 +101,19 @@ return array ( 'List index "{index}" is out of bound.' => 'Indeks liste "{index}" je van opsega.', 'Login Required' => 'Potrebna prijava', 'Map data must be an array or an object implementing Traversable.' => 'Podatak mape (Map data) mora biti niz ili objekat koji implementira Traversable.', - 'Missing the temporary folder to store the uploaded file "{file}".' => 'Nedostaje privremeni folder za skladiÅ¡te podignutog fajla "{file}".', - 'Next >' => 'Slijedeća >', - 'No columns are being updated for table "{table}".' => 'Ni jedna kolona neće biti ažurirana u tabeli "{table}".', + 'Missing the temporary folder to store the uploaded file "{file}".' => 'Nedostaje privremeni folder za spremanje uÄitanog fajla "{file}".', + 'Next >' => 'Sljedeća >', + 'No columns are being updated for table "{table}".' => 'Nijedna kolona neće biti ažurirana u tabeli "{table}".', 'No counter columns are being updated for table "{table}".' => 'BrojaÄ kolona neće biti ažuriran za tabelu "{table}".', 'Object configuration must be an array containing a "class" element.' => 'Konfiguracija objekta mora biti niz koji sadrži "class" element.', 'Please fix the following input errors:' => 'Molim vas ispravite greÅ¡ke:', 'Property "{class}.{property}" is not defined.' => 'Svojstvo (property) "{class}.{property}" nije definisano.', 'Property "{class}.{property}" is read only.' => 'Svojstvo (property) "{class}.{property}" je samo za Äitanje.', 'Queue data must be an array or an object implementing Traversable.' => 'Podatak reda (Queue data) mora biti niz ili objekat koji implementira Traversable.', - 'Relation "{name}" is not defined in active record class "{class}".' => 'Odnos "{name}" nije definisana u active record klasi "{class}".', - 'Resetting PK sequence is not supported.' => 'Ne podržava se vraćanja PK sekvencije.', + 'Relation "{name}" is not defined in active record class "{class}".' => 'Odnos "{name}" nije definisan u active record klasi "{class}".', + 'Resetting PK sequence is not supported.' => 'Ne podržava vraćanje PK sekvence.', 'Setting integrity check is not supported.' => 'Ne podržava se aktivacija kontrole integracije postavki.', - 'Stack data must be an array or an object implementing Traversable.' => 'Podatak hrpe (Stack data) mora biti niz ili objekat koji implementira Traversable.', + 'Stack data must be an array or an object implementing Traversable.' => 'Podatak sa steka (Stack data) mora biti niz ili objekat koji implementira Traversable.', 'Table "{table}" does not have a column named "{column}".' => 'Tabela "{table}" ne posjeduje kolonu "{column}".', 'Table "{table}" does not have a primary key defined.' => 'Tabela "{table}" nema definisan primarni kljuÄ (primary key).', 'The "filter" property must be specified with a valid callback.' => '"Filter" svojstvo (property) mora biti specificirano povratnom funkcijom (callback).', @@ -125,35 +125,35 @@ return array ( 'The active record cannot be inserted to database because it is not new.' => 'Active record ne može biti ubaÄen u bazu zato Å¡to je nov.', 'The active record cannot be updated because it is new.' => 'Active record ne može biti ažuriran zato Å¡to je nov.', 'The asset "{asset}" to be pulished does not exist.' => 'Resurs "{asset}" koji treba biti objavljen ne postoji.', - 'The command path "{path}" is not a valid directory.' => 'Put direktorijuma do komande (command path) "{path}" nije ispravan.', - 'The controller path "{path}" is not a valid directory.' => 'Put direktorijuma do kontrolera "{path}" nije ispravan.', + 'The command path "{path}" is not a valid directory.' => 'Put direktorija do komande (command path) "{path}" nije ispravan.', + 'The controller path "{path}" is not a valid directory.' => 'Put direktorija do kontrolera "{path}" nije ispravan.', 'The file "{file}" cannot be uploaded. Only files with these extensions are allowed: {extensions}.' => 'Fajl "{file}" ne može biti podignut (uploaded). Dozvoljeni su jedino fajlovi sa slijedećim ekstenzijama: {extensions}.', - 'The file "{file}" is too large. Its size cannot exceed {limit} bytes.' => 'Fajl "{file}" je prevelik. VeliÄina fajla ne sme da prekoraÄi {limit} bytes.', + 'The file "{file}" is too large. Its size cannot exceed {limit} bytes.' => 'Fajl "{file}" je prevelik. VeliÄina fajla ne smije da prekoraÄi {limit} bytes.', 'The file "{file}" is too small. Its size cannot be smaller than {limit} bytes.' => 'Fajl "{file}" je premali. VeliÄina fajla ne smije biti manja od {limit} bytes.', - 'The file "{file}" was only partially uploaded.' => 'Fajl "{file}" je samo delimiÄno podignut (uploaded).', + 'The file "{file}" was only partially uploaded.' => 'Fajl "{file}" je samo djelimiÄno uÄitan (uploaded).', 'The first element in a filter configuration must be the filter class.' => 'Prvi element u konfiguraciji filtera mora biti klasa filtera.', 'The item "{name}" does not exist.' => 'Stavka "{name}" ne postoji.', 'The item "{parent}" already has a child "{child}".' => 'Stavka "{parent}" već ima dijete "{child}".', - 'The layout path "{path}" is not a valid directory.' => 'Put do direktorijuma layout "{path}" nije ispravan.', + 'The layout path "{path}" is not a valid directory.' => 'Put do direktorija layout "{path}" nije ispravan.', 'The list is read only.' => 'Lista (List) je samo za Äitanje', 'The map is read only.' => 'Mapa (Map) je samo za Äitanje', 'The module path "{path}" is not a valid directory.' => 'Put do modula "{path}" je nevažeći direktorijum.', - 'The pattern for 12 hour format must be "h" or "hh".' => 'Å ablona za 12 Äasovni format mora biti "h" ili "hh".', - 'The pattern for 24 hour format must be "H" or "HH".' => 'Å ablona za 24 Äasovni format mora biti "H" ili "HH".', + 'The pattern for 12 hour format must be "h" or "hh".' => 'Å ablon za 12 Äasovni format mora biti "h" ili "hh".', + 'The pattern for 24 hour format must be "H" or "HH".' => 'Å ablon za 24 Äasovni format mora biti "H" ili "HH".', 'The pattern for AM/PM marker must be "a".' => 'Å ablona za AM/PM marker mora biti "a".', 'The pattern for day in month must be "F".' => 'Å ablona za dan u mjesecu mora biti "F".', - 'The pattern for day in year must be "D", "DD" or "DDD".' => 'Å ablona za dan u godini mora biti "D", "DD" ili "DDD".', - 'The pattern for day of the month must be "d" or "dd".' => 'Å ablona za dan mjeseca mora biti "d" ili "dd".', - 'The pattern for day of the week must be "E", "EE", "EEE", "EEEE" or "EEEEE".' => 'Å ablona za dan sedmice mora biti "E", "EE", "EEE", "EEEE" ili "EEEEE".', - 'The pattern for era must be "G", "GG", "GGG", "GGGG" or "GGGGG".' => 'Å ablona za doba mora biti "G", "GG", "GGG", "GGGG" ili "GGGGG".', - 'The pattern for hour in AM/PM must be "K" or "KK".' => 'Å ablona za Äas u AM/PM mora biti "K" ili "KK".', - 'The pattern for hour in day must be "k" or "kk".' => 'Å ablona za Äas u danu mora biti "k" ili "kk".', - 'The pattern for minutes must be "m" or "mm".' => 'Å ablona za minute mora biti "m" ili "mm".', - 'The pattern for month must be "M", "MM", "MMM", or "MMMM".' => 'Å ablona za mjesec mora biti "M", "MM", "MMM" ili "MMMM".', - 'The pattern for seconds must be "s" or "ss".' => 'Å ablona za sekunde mora biti "s" ili "ss".', - 'The pattern for time zone must be "z" or "v".' => 'Å ablona za zonu mora biti "z" ili "v".', - 'The pattern for week in month must be "W".' => 'Å ablona za sedmicu u mjesecu mora biti "W".', - 'The pattern for week in year must be "w".' => 'Å ablona za sedmicu u godini mora biti "w".', + 'The pattern for day in year must be "D", "DD" or "DDD".' => 'Å ablon za dan u godini mora biti "D", "DD" ili "DDD".', + 'The pattern for day of the month must be "d" or "dd".' => 'Å ablon za dan mjeseca mora biti "d" ili "dd".', + 'The pattern for day of the week must be "E", "EE", "EEE", "EEEE" or "EEEEE".' => 'Å ablon za dan sedmice mora biti "E", "EE", "EEE", "EEEE" ili "EEEEE".', + 'The pattern for era must be "G", "GG", "GGG", "GGGG" or "GGGGG".' => 'Å ablon za doba mora biti "G", "GG", "GGG", "GGGG" ili "GGGGG".', + 'The pattern for hour in AM/PM must be "K" or "KK".' => 'Å ablon za Äas u AM/PM mora biti "K" ili "KK".', + 'The pattern for hour in day must be "k" or "kk".' => 'Å ablon za Äas u danu mora biti "k" ili "kk".', + 'The pattern for minutes must be "m" or "mm".' => 'Å ablon za minute mora biti "m" ili "mm".', + 'The pattern for month must be "M", "MM", "MMM", or "MMMM".' => 'Å ablon za mjesec mora biti "M", "MM", "MMM" ili "MMMM".', + 'The pattern for seconds must be "s" or "ss".' => 'Å ablon za sekunde mora biti "s" ili "ss".', + 'The pattern for time zone must be "z" or "v".' => 'Å ablon za zonu mora biti "z" ili "v".', + 'The pattern for week in month must be "W".' => 'Å ablon za sedmicu u mjesecu mora biti "W".', + 'The pattern for week in year must be "w".' => 'Å ablon za sedmicu u godini mora biti "w".', 'The queue is empty.' => 'Red (queue) je prazan.', 'The relation "{relation}" in active record class "{class}" is not specified correctly: The join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'Odnos "{relation}" u active record klasi "{class}" nije specificirana ispravno: pridružena tabela (join table) "{joinTable}" zadata u spoljnom kljuÄu (foreign key) ne može biti pronaÄ‘ena u bazi.', 'The relation "{relation}" in active record class "{class}" is not specified correctly: the join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'Odnos "{relation}" u active record klasi "{class}" nije specificirana ispravno: pridružena tabela (join table) "{joinTable}" zadata u spoljnom kljuÄu (foreign key) ne može biti pronaÄ‘ena u bazi.', @@ -164,13 +164,13 @@ return array ( 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key. The columns in the key must match the primary keys of the table "{table}".' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana pogreÅ¡nim spoljnim kljuÄem (foreign key). Kolone spoljnog kljuÄa (foreign key) moraju biti iste kao i primarnog kljuÄa od tabele "{table}".', 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key. The format of the foreign key must be "joinTable(fk1,fk2,...)".' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana pogreÅ¡nim spoljnim kljuÄem (foreign key). Format spoljnog kljuÄa (foreign key) mora biti "joinTable(fk1,fk2,...)', 'The requested view "{name}" was not found.' => 'zahtjevani pogled (view) "{name}" nije pronaÄ‘en.', - 'The stack is empty.' => 'Hrpa (stack) je prazna.', - 'The system is unable to find the requested action "{action}".' => 'Sistem ne može da pronaÄ‘e zahtjevanu akciju "{action}".', - 'The system view path "{path}" is not a valid directory.' => 'Put direktorijuma do sistemskog pogleda (system view) "{path}" nije ispravan.', + 'The stack is empty.' => 'Stek (stack) je prazna.', + 'The system is unable to find the requested action "{action}".' => 'Sistem ne može da pronaÄ‘e traženu akciju "{action}".', + 'The system view path "{path}" is not a valid directory.' => 'Put direktorija do sistemskog pogleda (system view) "{path}" nije ispravan.', 'The table "{table}" for active record class "{class}" cannot be found in the database.' => 'Tabela "{table}" za active record klasu "{class}" ne može biti pronaÄ‘ena u bazi.', 'The value for the primary key "{key}" is not supplied when querying the table "{table}".' => 'Vrijednost primarnog kljuÄa (primary key) "{key}" nije prosljeÄ‘ena prilikom izvrÅ¡enja upita nad tabelom "{table}".', 'The verification code is incorrect.' => 'Verifikacioni kod je pogreÅ¡an.', - 'The view path "{path}" is not a valid directory.' => 'Put do prikaznog direktorijuma (view path) "{path}" ne važi.', + 'The view path "{path}" is not a valid directory.' => 'Put do prikaznog direktorija (view path) "{path}" nije važeći.', 'Theme directory "{directory}" does not exist.' => 'Direktorijum za teme (theme directory) "{directory}" ne postoji.', 'This content requires the Adobe Flash Player.' => 'Ovaj sadržaj zahtjeva Adobe Flash Player.', 'Unable to add an item whose name is the same as an existing item.' => 'Ne mogu da dodam stavku sa istim imenom kao postojeća stavka.', @@ -184,7 +184,7 @@ return array ( 'Unable to write file "{file}".' => 'Ne mogu da upiÅ¡em fajl "{file}".', 'Unknown authorization item "{name}".' => 'Nepoznata stavka ovlašćenja (authorization item) "{name}', 'Unrecognized locale "{locale}".' => 'Lokalizacija nije prepoznata (unrecognized locale) "{locale}".', - 'View file "{file}" does not exist.' => 'Fajl pogleda (view file) "{file}" ne postoji.', + 'View file "{file}" does not exist.' => 'View fajl "{file}" ne postoji.', 'Yii application can only be created once.' => 'Yii aplikacija može biti kreirana samo jedanput.', 'You are not authorized to perform this action.' => 'Niste autorizovani da izvrÅ¡ite ovu akciju.', 'Your request is not valid.' => 'VaÅ¡ zahtjev nije ispravan.', @@ -211,7 +211,7 @@ return array ( '{attribute} must be repeated exactly.' => '{attribute} mora biti taÄno ponovljen.', '{attribute} must be {type}.' => '{attribute} mora biti {type}.', '{attribute} must be {value}.' => '{attribute} mora biti {value}.', - '{attribute} must not be equal to "{compareValue}".' => '{attribute} nesmije biti isti kao "{compareValue}".', + '{attribute} must not be equal to "{compareValue}".' => '{attribute} ne smije biti isti kao "{compareValue}".', '{className} does not support add() functionality.' => '{className} ne podržava add() funcionalnost.', '{className} does not support delete() functionality.' => '{className} ne podržava delete() funkcionalnost.', '{className} does not support flush() functionality.' => '{className} ne podržava flush() funkcionalnost.', @@ -223,9 +223,9 @@ return array ( '{class} has an invalid validation rule. The rule must specify attributes to be validated and the validator name.' => '{class} ima pogreÅ¡no ovjereno pravilo (validation rule). Pravilo mora da specificira atribute koji ce biti ovjereni i ime ovjerenja.', '{class} must specify "model" and "attribute" or "name" property values.' => '{class} mora da specificira "model" i "attribute" ili "name" svojstvo (property) vrijednosti.', '{class}.allowAutoLogin must be set true in order to use cookie-based authentication.' => '{class}.allowAutoLogin mora biti podeÅ¡en na true da bi se koristila cookies autorizacija.', - '{class}::authenticate() must be implemented.' => '{class}::authenticate() mora biti implementirana.', - '{controller} cannot find the requested view "{view}".' => '{controller} ne može da pronaÄ‘e zahtjevani pogled (view) "{view}".', + '{class}::authenticate() must be implemented.' => '{class}::authenticate() metoda mora biti implementirana.', + '{controller} cannot find the requested view "{view}".' => '{controller} ne može da pronaÄ‘e zahtjevani view "{view}".', '{controller} contains improperly nested widget tags in its view "{view}". A {widget} widget does not have an endWidget() call.' => '{controller} sadrži nepropisno ugnježdene widget tagove u svom pogledu (view) "{view}". {widget} widget nema endWidget() poziv.', - '{controller} has an extra endWidget({id}) call in its view.' => '{controller} ima suviÅ¡an endWidget({id}) poziv u svom pogledu (view).', - '{widget} cannot find the view "{view}".' => '{widget} ne može da pronaÄ‘e pogled (view) "{view}".', + '{controller} has an extra endWidget({id}) call in its view.' => '{controller} ima suviÅ¡an endWidget({id}) poziv u svom view-u.', + '{widget} cannot find the view "{view}".' => '{widget} ne može da pronaÄ‘e view "{view}".', ); \ No newline at end of file diff --git a/web/framework-1.1.17/messages/ca/yii.php b/web/framework/messages/ca/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ca/yii.php rename to web/framework/messages/ca/yii.php diff --git a/web/framework-1.1.17/messages/ca/zii.php b/web/framework/messages/ca/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ca/zii.php rename to web/framework/messages/ca/zii.php diff --git a/web/framework-1.1.17/messages/config.php b/web/framework/messages/config.php similarity index 100% rename from web/framework-1.1.17/messages/config.php rename to web/framework/messages/config.php diff --git a/web/framework-1.1.17/messages/cs/yii.php b/web/framework/messages/cs/yii.php similarity index 100% rename from web/framework-1.1.17/messages/cs/yii.php rename to web/framework/messages/cs/yii.php diff --git a/web/framework-1.1.17/messages/cs/zii.php b/web/framework/messages/cs/zii.php similarity index 100% rename from web/framework-1.1.17/messages/cs/zii.php rename to web/framework/messages/cs/zii.php diff --git a/web/framework-1.1.17/messages/da/yii.php b/web/framework/messages/da/yii.php similarity index 100% rename from web/framework-1.1.17/messages/da/yii.php rename to web/framework/messages/da/yii.php diff --git a/web/framework-1.1.17/messages/da/zii.php b/web/framework/messages/da/zii.php similarity index 100% rename from web/framework-1.1.17/messages/da/zii.php rename to web/framework/messages/da/zii.php diff --git a/web/framework-1.1.17/messages/de/yii.php b/web/framework/messages/de/yii.php similarity index 100% rename from web/framework-1.1.17/messages/de/yii.php rename to web/framework/messages/de/yii.php diff --git a/web/framework-1.1.17/messages/de/zii.php b/web/framework/messages/de/zii.php similarity index 100% rename from web/framework-1.1.17/messages/de/zii.php rename to web/framework/messages/de/zii.php diff --git a/web/framework-1.1.17/messages/el/yii.php b/web/framework/messages/el/yii.php similarity index 100% rename from web/framework-1.1.17/messages/el/yii.php rename to web/framework/messages/el/yii.php diff --git a/web/framework-1.1.17/messages/el/zii.php b/web/framework/messages/el/zii.php similarity index 100% rename from web/framework-1.1.17/messages/el/zii.php rename to web/framework/messages/el/zii.php diff --git a/web/framework-1.1.17/messages/es/yii.php b/web/framework/messages/es/yii.php similarity index 100% rename from web/framework-1.1.17/messages/es/yii.php rename to web/framework/messages/es/yii.php diff --git a/web/framework-1.1.17/messages/es/zii.php b/web/framework/messages/es/zii.php similarity index 100% rename from web/framework-1.1.17/messages/es/zii.php rename to web/framework/messages/es/zii.php diff --git a/web/framework-1.1.17/messages/fa_ir/yii.php b/web/framework/messages/fa_ir/yii.php similarity index 100% rename from web/framework-1.1.17/messages/fa_ir/yii.php rename to web/framework/messages/fa_ir/yii.php diff --git a/web/framework-1.1.17/messages/fa_ir/zii.php b/web/framework/messages/fa_ir/zii.php similarity index 100% rename from web/framework-1.1.17/messages/fa_ir/zii.php rename to web/framework/messages/fa_ir/zii.php diff --git a/web/framework-1.1.17/messages/fi/yii.php b/web/framework/messages/fi/yii.php similarity index 100% rename from web/framework-1.1.17/messages/fi/yii.php rename to web/framework/messages/fi/yii.php diff --git a/web/framework-1.1.17/messages/fi/zii.php b/web/framework/messages/fi/zii.php similarity index 100% rename from web/framework-1.1.17/messages/fi/zii.php rename to web/framework/messages/fi/zii.php diff --git a/web/framework-1.1.17/messages/fr/yii.php b/web/framework/messages/fr/yii.php similarity index 97% rename from web/framework-1.1.17/messages/fr/yii.php rename to web/framework/messages/fr/yii.php index e6fdb68..df2c86e 100644 --- a/web/framework-1.1.17/messages/fr/yii.php +++ b/web/framework/messages/fr/yii.php @@ -69,10 +69,10 @@ return array ( 'CDbAuthManager.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'La propriété CDbAuthManager.connectionID « {id} » est invalide. Vérifiez qu\'elle référence l\'ID d\'un composant d\'application de type CDbConnection.', 'CDbCache.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'La propriété CDbCache.connectionID « {id} » est invalide. Vérifiez qu\'elle référence l\'ID d\'un composant d\'application de type CDbConnection.', 'CDbCacheDependency.sql cannot be empty.' => 'La propriété CDbCacheDependency.sql ne peut être vide.', - 'CDbCommand failed to execute the SQL statement: {error}' => 'CDbCommand n\'a pas pu exécuter la commande SQL : {error}', - 'CDbCommand failed to prepare the SQL statement: {error}' => 'CDbCommand n\'a pas pu préparer la commande SQL : {error}', - 'CDbConnection does not support reading schema for {driver} database.' => 'CDbConnection ne supporte pas la lecture du schéma de la base de données {driver}.', - 'CDbConnection failed to open the DB connection: {error}' => 'CDbConnection n\'a pu ouvrir la connexion à la base de données : {error}', + 'CDbCommand failed to execute the SQL statement: {error}' => 'CDbCommand n\'a pas pu exécuter la commande SQL: {error}', + 'CDbCommand failed to prepare the SQL statement: {error}' => 'CDbCommand n\'a pas pu préparer la commande SQL: {error}', + 'CDbConnection does not support reading schema for {driver} database.' => 'CDbConnection ne supporte pas la lecture de schéma pour les bases de données {driver}.', + 'CDbConnection failed to open the DB connection: {error}' => 'CDbConnection n\'a pu ouvrir la connexion à la base de données: {error}', 'CDbConnection is inactive and cannot perform any DB operations.' => 'CDbConnection est inactive et ne peut effectuer aucune opération sur la base de données.', 'CDbConnection.connectionString cannot be empty.' => 'La propriété CDbConnection.connectionString ne peut être vide.', 'CDbDataReader cannot rewind. It is a forward-only reader.' => 'CDbDataReader ne peut reculer. Seule la lecture en avant est possible.', @@ -111,9 +111,9 @@ return array ( 'Cannot add "{name}" as a child of itself.' => 'Impossible d\'ajouter « {name} » en tant qu\'enfant de lui-même.', 'Cannot add an item of type "{child}" to an item of type "{parent}".' => 'Impossible d\'ajouter un élément de type « {child} » à un élément de type « {parent} ».', 'Column name must be either a string or an array.' => 'Le nom de la colonne doit être une chaine de caractères ou un tableau.', - 'Either "{parent}" or "{child}" does not exist.' => 'Soit « {parent} » soit « {child} » n\'existe pas.', - 'Error: Table "{table}" does not have a primary key.' => 'Erreur : la table « {table} » n\'a pas de clef primaire.', - 'Error: Table "{table}" has a composite primary key which is not supported by crud command.' => 'Erreur : la table « {table} » a une clef primaire composite qui n\'est pas supportée par les commandes CRUD.', + 'Either "{parent}" or "{child}" does not exist.' => '« {parent} » ou « {child} » est inexistant.', + 'Error: Table "{table}" does not have a primary key.' => 'Erreur: la table « {table} » n\'a pas de clef primaire.', + 'Error: Table "{table}" has a composite primary key which is not supported by crud command.' => 'Erreur: la table « {table} » a une clef primaire composite qui n\'est pas supportée par les commandes CRUD.', 'Event "{class}.{event}" is attached with an invalid handler "{handler}".' => 'L\'événement « {class}.{event} » est associé à un gestionnaire d\'événement « {handler} » invalide.', 'Event "{class}.{event}" is not defined.' => 'L\'événement « {class}.{event} » n\'est pas défini.', 'Extension path "{path}" does not exist.' => 'Le chemin d\'accès « {path} » de l\'extension n\'existe pas.', @@ -121,7 +121,7 @@ return array ( 'File upload was stopped by extension.' => 'Le téléchargement a été stoppé par l\'extension.', 'Filter "{filter}" is invalid. Controller "{class}" does have the filter method "filter{filter}".' => 'Le filtre « {filter} » est invalide. Le contrôleur « {class} » possède la méthode de filtrage « filter{filter} ».', 'Get a new code' => 'Récupérez un nouveau code', - 'Go to page: ' => 'Aller à la page :', + 'Go to page: ' => 'Aller à la page:', 'Invalid MO file revision: {revision}.' => 'Version du fichier MO invalide: {revision}.', 'Invalid MO file: {file} (magic: {magic}).' => 'Fichier MO invalide: {file} (magic: {magic}).', 'Invalid enumerable value "{value}". Please make sure it is among ({enum}).' => 'Valeur « {value} » invalide. Vérifiez qu\'elle fait partie de ({enum}).', @@ -136,7 +136,7 @@ return array ( 'No columns are being updated for table "{table}".' => 'Aucune colonne de la table « {table} » ne sera mise à jour.', 'No counter columns are being updated for table "{table}".' => 'Aucune colonne incrémentale de la table « {table} » ne sera mise à jour.', 'Object configuration must be an array containing a "class" element.' => 'L\'objet configuration doit être un tableau contenant un élément « class ».', - 'Please fix the following input errors:' => 'Veuillez corriger les erreurs de saisie :', + 'Please fix the following input errors:' => 'Veuillez corriger les erreurs de saisie:', 'Property "{class}.{property}" is not defined.' => 'La propriété « {class}.{property} » est indéfinie.', 'Property "{class}.{property}" is read only.' => 'La propriété « {class}.{property} » est en lecture seule.', 'Queue data must be an array or an object implementing Traversable.' => 'Les données de la queue doivent être un tableau ou un objet qui implémente Traversable.', @@ -155,7 +155,7 @@ return array ( 'The asset "{asset}" to be published does not exist.' => 'L\'asset « {asset} » à publier n\'existe pas.', 'The command path "{path}" is not a valid directory.' => 'Le chemin d\'accès « {path} » à la ligne de commande n\'est pas un dossier valide.', 'The controller path "{path}" is not a valid directory.' => 'Le chemin d\'accès « {path} » au contrôleur n\'est pas un dossier valide.', - 'The file "{file}" cannot be uploaded. Only files with these extensions are allowed: {extensions}.' => 'Le fichier « {file} » ne peut être téléchargé. Les extensions de fichier autorisées sont : {extensions}.', + 'The file "{file}" cannot be uploaded. Only files with these extensions are allowed: {extensions}.' => 'Le fichier « {file} » ne peut être téléchargé. Les extensions de fichier autorisées sont: {extensions}.', 'The file "{file}" is too large. Its size cannot exceed {limit} bytes.' => 'Le fichier « {file} » est trop gros. Sa taille ne peut être supérieure à {limit} octets.', 'The file "{file}" is too small. Its size cannot be smaller than {limit} bytes.' => 'Le fichier « {file} » est trop petit. Sa taille ne peut être inférieure à {limit} octets.', 'The file "{file}" was only partially uploaded.' => 'Le fichier « {file} » a été téléchargé partiellement.', @@ -182,8 +182,8 @@ return array ( 'The pattern for week in month must be "W".' => 'Le motif de définition du numéro de semaine dans le mois doit être « W ».', 'The pattern for week in year must be "w".' => 'Le motif de définition du numéro de semaine dans l\'année doit être « w ».', 'The queue is empty.' => 'La queue est vide.', - 'The relation "{relation}" in active record class "{class}" is not specified correctly. The join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'La relation « {relation} » dans la classe Active record « {class} » n\'est pas définie correctement. La table de jointure « {joinTable} » donnée par la clef étrangère n\'a pas été trouvée dans la base de données.', - 'The relation "{relation}" in active record class "{class}" is not specified correctly: the join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'La relation « {relation} » définie dans la classe Active record « {class} » est incorrecte : la table de jointure « {joinTable} » spécifiée par la clef étrangère est introuvable dans la base de données.', + 'The relation "{relation}" in active record class "{class}" is not specified correctly. The join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'La relation « {relation} » dans la classe Active record « {class} » n\'est pas définie correctement. La table de jointure « {joinTable} » donnée de la clef étrangère n\'est pas trouvée dans la base de données.', + 'The relation "{relation}" in active record class "{class}" is not specified correctly: the join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'La relation « {relation} » définie dans la classe Active record « {class} » est incorrecte: la table de jointure « {joinTable} » spécifiée par la clef étrangère est introuvable dans la base de données.', 'The relation "{relation}" in active record class "{class}" is specified with a foreign key "{key}" that does not point to the parent table "{table}".' => 'La relation « {relation} » dans la classe Active record « {class} » est définie avec la clef étrangère « {key} » qui ne pointe pas vers la table parente « {table} ».', 'The relation "{relation}" in active record class "{class}" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.' => 'La relation « {relation} » définie dans l\'active record « {class} » a une clef étrangère incomplète. La clef étrangère doit être constituée de colonnes qui font référence aux deux tables jointes.', 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". There is no such column in the table "{table}".' => 'La relation « {relation} » définie dans la classe active record « {class} » a une clef étrangère « {key} » invalide. Cette colonne n\'existe pas dans la table « {table} ».', @@ -221,10 +221,10 @@ return array ( '{attribute} is not a valid email address.' => '{attribute} n\'est pas une adresse email valide.', '{attribute} is not in the list.' => '{attribute} n\'est pas dans la liste.', '{attribute} is of the wrong length (should be {length} characters).' => '{attribute} n\'est pas de la bonne longueur ({length} caractères autorisés).', - '{attribute} is too big (maximum is {max}).' => '{attribute} est trop grand (maximum : {max}).', - '{attribute} is too long (maximum is {max} characters).' => '{attribute} est trop long (maximum : {max} caractères).', - '{attribute} is too short (minimum is {min} characters).' => '{attribute} est trop court (minimum : {min} caractères).', - '{attribute} is too small (minimum is {min}).' => '{attribute} est trop petit (minimum : {min}).', + '{attribute} is too big (maximum is {max}).' => '{attribute} est trop grand (maximum: {max}).', + '{attribute} is too long (maximum is {max} characters).' => '{attribute} est trop long (maximum: {max} caractères).', + '{attribute} is too short (minimum is {min} characters).' => '{attribute} est trop court (minimum: {min} caractères).', + '{attribute} is too small (minimum is {min}).' => '{attribute} est trop petit (minimum: {min}).', '{attribute} must be a number.' => '{attribute} doit être un nombre.', '{attribute} must be an integer.' => '{attribute} doit être un entier.', '{attribute} must be either {true} or {false}.' => '{attribute} doit être soit {true} soit {false}.', diff --git a/web/framework-1.1.17/messages/fr/zii.php b/web/framework/messages/fr/zii.php similarity index 100% rename from web/framework-1.1.17/messages/fr/zii.php rename to web/framework/messages/fr/zii.php diff --git a/web/framework-1.1.17/messages/he/yii.php b/web/framework/messages/he/yii.php similarity index 100% rename from web/framework-1.1.17/messages/he/yii.php rename to web/framework/messages/he/yii.php diff --git a/web/framework-1.1.17/messages/he/zii.php b/web/framework/messages/he/zii.php similarity index 100% rename from web/framework-1.1.17/messages/he/zii.php rename to web/framework/messages/he/zii.php diff --git a/web/framework/messages/hr/yii.php b/web/framework/messages/hr/yii.php new file mode 100644 index 0000000..d41e4d9 --- /dev/null +++ b/web/framework/messages/hr/yii.php @@ -0,0 +1,231 @@ + '0', + 'Virtual attribute {name} must specify "asc" and "desc" options.' => 'Virtualni atribut {name} mora specificirati "asc"- i "desc" opcije.', + '"{path}" is not a valid directory.' => '"{path}" nije važeći direktorij.', + '< Previous' => '< Prethodna', + '<< First' => '<< Prva', + 'Active Record requires a "db" CDbConnection application component.' => 'ActiveRecord zahtjeva "db" CDbConnection aplikacijsku komponentu.', + 'Active record "{class}" has an invalid configuration for relation "{relation}". It must specify the relation type, the related active record class and the foreign key.' => 'ActiveRecord-Klasa "{class}" ima nevažeću konfiguraciju za odnos "{relation}". Tipa odnosa, odnosni ActiveRecord i strani kljuÄ (foreign key) moraju biti postavljeni.', + 'Active record "{class}" is trying to select an invalid column "{column}". Note, the column must exist in the table or be an expression with alias.' => 'ActiveRecord "{class}" koristi nevažeće polje "{column}" u SELECT. Pripazite da to polje mora da postoji u tabeli ili da bude alias izraz.', + 'Active record class "{class}" does not have a scope named "{scope}".' => 'ActiveRecord-Klasa "{class}" nema polje imenovano "{scope}".', + 'Alias "{alias}" is invalid. Make sure it points to an existing directory or file.' => 'Alias "{alias}" je validan. Molim vas, uspostavite da pokazuje do važećeg direktorija ili fajla.', + 'Application base path "{path}" is not a valid directory.' => 'Glavni put (base path) "{path}" aplikacije nije važeći.', + 'Application runtime path "{path}" is not valid. Please make sure it is a directory writable by the Web server process.' => 'Prometni put (runtime path) "{path}" aplikacije je nevažan. Pripazite da proces web servera ima pravo da tamo piÅ¡e.', + 'Authorization item "{item}" has already been assigned to user "{user}".' => 'Element autorizacije "{item}" je već namjenjen korisniku "{user}".', + 'Base path "{path}" is not a valid directory.' => 'Glavni put "{path}" je nevažeći direktorijum.', + 'CApcCache requires PHP apc extension to be loaded.' => 'CApcCache zahtjeva da je uÄitan PHP APC dodatak.', + 'CAssetManager.basePath "{path}" is invalid. Please make sure the directory exists and is writable by the Web server process.' => 'CAssetManager.basePath "{path}" nije važeća. Pripazite da postoji taj direktorijum i da proces web servera ima pravo da tamo piÅ¡e.', + 'CCacheHttpSession.cacheID is invalid. Please make sure "{id}" refers to a valid cache application component.' => 'CCacheHttpSession.cacheID nije važeća. Molim vas, uspostavite da se "{id}" odnosi na važeću cache aplikacionu komponentu.', + 'CCaptchaValidator.action "{id}" is invalid. Unable to find such an action in the current controller.' => 'CCaptchaValidator.action "{id}" nije važeća. Ne mogu da pronaÄ‘em takvu akciju u trenutnom controlleru.', + 'CDbAuthManager.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbAuthManager.connectionID "{id}" nije važeća. Molimo vas, uspostavite da se "{id}" odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbCache.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbCache.connectionID "{id}" nije važeća. Molimo vas, uspostavite da se odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbCacheDependency.sql cannot be empty.' => 'CDbCacheDependency.sql ne smije biti prazno.', + 'CDbCommand failed to execute the SQL statement: {error}' => 'CDbCommand ne može da izvrÅ¡i SQL-Statement: {error}', + 'CDbCommand failed to prepare the SQL statement: {error}' => 'CDbCommand ne može da pripremi SQL-Statement: {error}', + 'CDbConnection does not support reading schema for {driver} database.' => 'CDbConnection ne podržava Äitanje Å¡ema za {driver}-datoteke.', + 'CDbConnection failed to open the DB connection: {error}' => 'CDbConnection ne može da uspostavi spoj sa datotekom: {error}', + 'CDbConnection is inactive and cannot perform any DB operations.' => 'CDbConnection nije aktivna i ne može izvrÅ¡avati operacije na datoteci.', + 'CDbConnection.connectionString cannot be empty.' => 'CDbConnection.connectionString ne smije biti prazno.', + 'CDbDataReader cannot rewind. It is a forward-only reader.' => 'CDbDataReader se ne može premotavati. On je forward-only (samo naprijed) ÄitaÄ.', + 'CDbHttpSession.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbHttpSession.connectionID "{id}" nije važeća. Molimo vas, uspostavite da se "{id}" odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbLogRoute.connectionID "{id}" does not point to a valid CDbConnection application component.' => 'CDbLogRoute.connectionID "{id}" ne pokazuje na važeću aplikacijsku komponentu od tipa Typ CDbConnection.', + 'CDbMessageSource.connectionID is invalid. Please make sure "{id}" refers to a valid database application component.' => 'CDbMessageSource.connectionID je nevažna. Molimo vas, uspostavite da se "{id}" odnosi na važeću aplikacijsku komponentu tipa CDbConnection.', + 'CDbTestFixture.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.' => 'CDbFixture.connectionID "{id}" je nevažeća. Molim vas, uspostavite da se odnosi na važeću aplikacionu komponentu tipa CDbConnection.', + 'CDbTransaction is inactive and cannot perform commit or roll back operations.' => 'CDbTransaction nije aktivno i ne može da izvrÅ¡i Commit- ili Rollback operaciju.', + 'CDirectoryCacheDependency.directory cannot be empty.' => 'CDirectoryCacheDependency.directory ne smije biti prazno.', + 'CEAcceleratorCache requires PHP eAccelerator extension to be loaded, enabled or compiled with the "--with-eaccelerator-shared-memory" option.' => 'CEAcceleratorCache zahtjeva da je PHP eAccelerator dodatak uÄitan i aktiviran ili se kompajlira sa opcijom "--with-eaccelerator-shared-memory".', + 'CFileCacheDependency.fileName cannot be empty.' => 'CFileCacheDependency.fileName ne smije biti prazno.', + 'CFileLogRoute.logPath "{path}" does not point to a valid directory. Make sure the directory exists and is writable by the Web server process.' => 'CFileLogRoute.logPath "{path}" ne pokazuje na nevažeći direktorij. Pripazite da postoji taj direktorij i da proces web servera ima pravo da tamo piÅ¡e.', + 'CFilterChain can only take objects implementing the IFilter interface.' => 'CFilterChain smije primiti samo objekte koje implementiraju IFilter-Interface.', + 'CFlexWidget.baseUrl cannot be empty.' => 'CFlexWidget.baseUrl ne smije biti prazno.', + 'CFlexWidget.name cannot be empty.' => 'CFlexWidget.name ne smije biti prazno.', + 'CGlobalStateCacheDependency.stateName cannot be empty.' => 'CGlobalStateCacheDependency.stateName ne smije biti prazno.', + 'CHttpCookieCollection can only hold CHttpCookie objects.' => 'CHttpCookieCollection smije da sadrži samo CHttpCookie-Objekte.', + 'CHttpRequest is unable to determine the entry script URL.' => 'CHttpRequest ne može da ustanovi URL ulaznog skripta (entry script).', + 'CHttpRequest is unable to determine the path info of the request.' => 'CHttpRequest ne može da ustanovi informacije o putu (path info) za tekući zahtjev (request).', + 'CHttpRequest is unable to determine the request URI.' => 'CHttpRequest ne može da ustanovi URI za tekući zahtjev (request).', + 'CHttpSession.cookieMode can only be "none", "allow" or "only".' => 'CHttpSession.cookieMode može biti jedino "none", "allow" ili "only".', + 'CHttpSession.gcProbability "{value}" is invalid. It must be an integer between 0 and 100.' => 'CHttpSession.gcProbability "{value}" je pogreÅ¡an. Mora biti cijeli broj (integer) izmeÄ‘u 0 i 100.', + 'CHttpSession.savePath "{path}" is not a valid directory.' => 'CHttpSession.savePath "{path}" nije ispravan direktorij.', + 'CMemCache server configuration must be an array.' => 'CMemCache server konfiguracija mora biti niz (array)', + 'CMemCache server configuration must have "host" value.' => 'CMemCache server konfiguracija mora imati dodjeljenu vrijednost za "host".', + 'CMultiFileUpload.name is required.' => 'CMultiFileUpload.name je obavezno.', + 'CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.' => 'CProfileLogRoute je naÅ¡ao neusaglaÅ¡en blok koda "{token}". Budite sigurni da su pozivi Yii::beginProfile() i Yii::endProfile() ispravno ugnježdeni.', + 'CProfileLogRoute.report "{report}" is invalid. Valid values include "summary" and "callstack".' => 'CProfileLogRoute.report "{report}" je pogreÅ¡an. Ispravne vrijednosti ukljuÄuju "summary" i "callstack".', + 'CSecurityManager requires PHP mcrypt extension to be loaded in order to use data encryption feature.' => 'CSecurityManager zahtjeva da PHP mcrypt ekstenzija bude ukljuÄena da bi se koristila mogućnost enkripcije podataka.', + 'CSecurityManager.encryptionKey cannot be empty.' => 'CSecurityManager.encryptionKey ne može biti prazan.', + 'CSecurityManager.validation must be either "MD5" or "SHA1".' => 'CSecurityManager.validation mora biti "MD5" ili "SHA1".', + 'CSecurityManager.validationKey cannot be empty.' => 'CSecurityManager.validationKey ne može biti prazan', + 'CTypedList<{type}> can only hold objects of {type} class.' => 'CTypedList<{type}> može da sadrži jedino objekte {type} klase.', + 'CUrlManager.UrlFormat must be either "path" or "get".' => 'CUrlManager.UrlFormat mora biti "path" ili "get".', + 'CXCache requires PHP XCache extension to be loaded.' => 'CXCache zahtjeva da ekstenzija PHP XCache bude uÄitana.', + 'CZendDataCache requires PHP Zend Data Cache extension to be loaded.' => 'CZendDataCache zahtjeva da ekstenzija PHP Zend Cache bude uÄitana.', + 'Cannot add "{child}" as a child of "{name}". A loop has been detected.' => 'Ne mogu da dodam "{child}" kao dijete od "{name}". Detektovana je petlja.', + 'Cannot add "{child}" as a child of "{parent}". A loop has been detected.' => 'Ne mogu da dodam "{child}" kao dijete od "{parent}". Detektovana je petlja.', + 'Cannot add an item of type "{child}" to an item of type "{parent}".' => 'Ne mogu da dodam stavku (item) tipa "{child}" u stavku (item) tipa "{parent}".', + 'Cannot add "{name}" as a child of itself.' => 'Ne mogu da dodam "{name}" kao svoje dijete.', + 'Column "{column} does not exist in table "{table}".' => 'Kolona "{column}" ne postoji u tabeli "{table}".', + 'Column name must be either a string or an array.' => 'Ime kolone mora biti string ili array.', + 'Either "{parent}" or "{child}" does not exist.' => 'Ni "{parent}" ni "{child}" ne postoje.', + 'Error: Table "{table}" does not have a primary key.' => 'GreÅ¡ka: Tabela "{table}" nema primarni kljuÄ (primary key).', + 'Error: Table "{table}" has a composite primary key which is not supported by crud command.' => 'GreÅ¡ka: Tabela "{table}" ima kompozitni primarni kljuÄ (composite primary key) koji nije podržan od strane "crud" komande.', + 'Event "{class}.{event}" is attached with an invalid handler "{handler}".' => 'DogaÄ‘aj "{class}.{event}" je zakaÄen za pogreÅ¡an (nevažeći) hendler (handler) "{handler}".', + 'Event "{class}.{event}" is not defined.' => 'DogaÄ‘aj (event) "{class}.{event}" nije definisan.', + 'Extension path "{path}" does not exist.' => 'Put dodataka (extension path) "{path}" ne postoji.', + 'Failed to write the uploaded file "{file}" to disk.' => 'NeuspjeÅ¡no snimanje uploadovanog fajla (uploaded file) "{file}" na disk.', + 'File upload was stopped by extension.' => 'Upload fajla (file upload) je zaustavljeno od strane ekstenzije.', + 'Filter "{filter}" is invalid. Controller "{class}" does have the filter method "filter{filter}".' => 'Filter "{filter}" je pogreÅ¡an. Kontroler "{class}" sadrži filter metod "filter{filter}".', + 'Get a new code' => 'Dobavi novi kod', + 'Go to page: ' => 'Idi na stranicu: ', + 'Invalid MO file revision: {revision}.' => 'PogreÅ¡na revizija MO fajla: {revision}.', + 'Invalid MO file: {file} (magic: {magic}).' => 'PogreÅ¡an (neispravan) MO fajl: {file} (magic: {magic}).', + 'Invalid enumerable value "{value}". Please make sure it is among ({enum}).' => 'PogreÅ¡na nabrojiva vrijednost "{value}". Molim vas, budite sigurni da je iz ({enum}).', + 'Invalid operator "{operator}".' => 'Nevažeći operator "{operator}".', + 'Last >>' => 'Zadnja >>', + 'List data must be an array or an object implementing Traversable.' => 'Podatak liste (List data) mora biti niz ili objekat koji implementira Traversable.', + 'List index "{index}" is out of bound.' => 'Indeks liste "{index}" je van opsega.', + 'Login Required' => 'Potrebna prijava', + 'Map data must be an array or an object implementing Traversable.' => 'Podatak mape (Map data) mora biti niz ili objekat koji implementira Traversable.', + 'Missing the temporary folder to store the uploaded file "{file}".' => 'Nedostaje privremeni folder za spremanje uÄitanog fajla "{file}".', + 'Next >' => 'Sljedeća >', + 'No columns are being updated for table "{table}".' => 'Nijedna kolona neće biti ažurirana u tabeli "{table}".', + 'No counter columns are being updated for table "{table}".' => 'BrojaÄ kolona neće biti ažuriran za tabelu "{table}".', + 'Object configuration must be an array containing a "class" element.' => 'Konfiguracija objekta mora biti niz koji sadrži "class" element.', + 'Please fix the following input errors:' => 'Molim vas ispravite greÅ¡ke:', + 'Property "{class}.{property}" is not defined.' => 'Svojstvo (property) "{class}.{property}" nije definisano.', + 'Property "{class}.{property}" is read only.' => 'Svojstvo (property) "{class}.{property}" je samo za Äitanje.', + 'Queue data must be an array or an object implementing Traversable.' => 'Podatak reda (Queue data) mora biti niz ili objekat koji implementira Traversable.', + 'Relation "{name}" is not defined in active record class "{class}".' => 'Odnos "{name}" nije definisan u active record klasi "{class}".', + 'Resetting PK sequence is not supported.' => 'Ne podržava vraćanje PK sekvence.', + 'Setting integrity check is not supported.' => 'Ne podržava se aktivacija kontrole integracije postavki.', + 'Stack data must be an array or an object implementing Traversable.' => 'Podatak sa steka (Stack data) mora biti niz ili objekat koji implementira Traversable.', + 'Table "{table}" does not have a column named "{column}".' => 'Tabela "{table}" ne posjeduje kolonu "{column}".', + 'Table "{table}" does not have a primary key defined.' => 'Tabela "{table}" nema definisan primarni kljuÄ (primary key).', + 'The "filter" property must be specified with a valid callback.' => '"Filter" svojstvo (property) mora biti specificirano povratnom funkcijom (callback).', + 'The "pattern" property must be specified with a valid regular expression.' => '"Pattern" svojstvo (property) mora biti specificirano ispravnim regularnim izrazom (regular expression).', + 'The "view" property is required.' => '"view" svojstvo (property) je obavezno.', + 'The CSRF token could not be verified.' => 'CSRF token ne može biti potvrÄ‘en (verifikovan).', + 'The URL pattern "{pattern}" for route "{route}" is not a valid regular expression.' => 'URL Å¡ablon (pattern) "{pattern}" za rutu "{route}" nije ispravan regularni izraz (regular expression).', + 'The active record cannot be deleted because it is new.' => 'Active record ne može biti izbrisan zato Å¡to je nov.', + 'The active record cannot be inserted to database because it is not new.' => 'Active record ne može biti ubaÄen u bazu zato Å¡to je nov.', + 'The active record cannot be updated because it is new.' => 'Active record ne može biti ažuriran zato Å¡to je nov.', + 'The asset "{asset}" to be pulished does not exist.' => 'Resurs "{asset}" koji treba biti objavljen ne postoji.', + 'The command path "{path}" is not a valid directory.' => 'Put direktorija do komande (command path) "{path}" nije ispravan.', + 'The controller path "{path}" is not a valid directory.' => 'Put direktorija do kontrolera "{path}" nije ispravan.', + 'The file "{file}" cannot be uploaded. Only files with these extensions are allowed: {extensions}.' => 'Fajl "{file}" ne može biti podignut (uploaded). Dozvoljeni su jedino fajlovi sa slijedećim ekstenzijama: {extensions}.', + 'The file "{file}" is too large. Its size cannot exceed {limit} bytes.' => 'Fajl "{file}" je prevelik. VeliÄina fajla ne smije da prekoraÄi {limit} bytes.', + 'The file "{file}" is too small. Its size cannot be smaller than {limit} bytes.' => 'Fajl "{file}" je premali. VeliÄina fajla ne smije biti manja od {limit} bytes.', + 'The file "{file}" was only partially uploaded.' => 'Fajl "{file}" je samo djelimiÄno uÄitan (uploaded).', + 'The first element in a filter configuration must be the filter class.' => 'Prvi element u konfiguraciji filtera mora biti klasa filtera.', + 'The item "{name}" does not exist.' => 'Stavka "{name}" ne postoji.', + 'The item "{parent}" already has a child "{child}".' => 'Stavka "{parent}" već ima dijete "{child}".', + 'The layout path "{path}" is not a valid directory.' => 'Put do direktorija layout "{path}" nije ispravan.', + 'The list is read only.' => 'Lista (List) je samo za Äitanje', + 'The map is read only.' => 'Mapa (Map) je samo za Äitanje', + 'The module path "{path}" is not a valid directory.' => 'Put do modula "{path}" je nevažeći direktorijum.', + 'The pattern for 12 hour format must be "h" or "hh".' => 'Å ablon za 12 Äasovni format mora biti "h" ili "hh".', + 'The pattern for 24 hour format must be "H" or "HH".' => 'Å ablon za 24 Äasovni format mora biti "H" ili "HH".', + 'The pattern for AM/PM marker must be "a".' => 'Å ablona za AM/PM marker mora biti "a".', + 'The pattern for day in month must be "F".' => 'Å ablona za dan u mjesecu mora biti "F".', + 'The pattern for day in year must be "D", "DD" or "DDD".' => 'Å ablon za dan u godini mora biti "D", "DD" ili "DDD".', + 'The pattern for day of the month must be "d" or "dd".' => 'Å ablon za dan mjeseca mora biti "d" ili "dd".', + 'The pattern for day of the week must be "E", "EE", "EEE", "EEEE" or "EEEEE".' => 'Å ablon za dan sedmice mora biti "E", "EE", "EEE", "EEEE" ili "EEEEE".', + 'The pattern for era must be "G", "GG", "GGG", "GGGG" or "GGGGG".' => 'Å ablon za doba mora biti "G", "GG", "GGG", "GGGG" ili "GGGGG".', + 'The pattern for hour in AM/PM must be "K" or "KK".' => 'Å ablon za Äas u AM/PM mora biti "K" ili "KK".', + 'The pattern for hour in day must be "k" or "kk".' => 'Å ablon za Äas u danu mora biti "k" ili "kk".', + 'The pattern for minutes must be "m" or "mm".' => 'Å ablon za minute mora biti "m" ili "mm".', + 'The pattern for month must be "M", "MM", "MMM", or "MMMM".' => 'Å ablon za mjesec mora biti "M", "MM", "MMM" ili "MMMM".', + 'The pattern for seconds must be "s" or "ss".' => 'Å ablon za sekunde mora biti "s" ili "ss".', + 'The pattern for time zone must be "z" or "v".' => 'Å ablon za zonu mora biti "z" ili "v".', + 'The pattern for week in month must be "W".' => 'Å ablon za sedmicu u mjesecu mora biti "W".', + 'The pattern for week in year must be "w".' => 'Å ablon za sedmicu u godini mora biti "w".', + 'The queue is empty.' => 'Red (queue) je prazan.', + 'The relation "{relation}" in active record class "{class}" is not specified correctly: The join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'Odnos "{relation}" u active record klasi "{class}" nije specificirana ispravno: pridružena tabela (join table) "{joinTable}" zadata u spoljnom kljuÄu (foreign key) ne može biti pronaÄ‘ena u bazi.', + 'The relation "{relation}" in active record class "{class}" is not specified correctly: the join table "{joinTable}" given in the foreign key cannot be found in the database.' => 'Odnos "{relation}" u active record klasi "{class}" nije specificirana ispravno: pridružena tabela (join table) "{joinTable}" zadata u spoljnom kljuÄu (foreign key) ne može biti pronaÄ‘ena u bazi.', + 'The relation "{relation}" in active record class "{class}" is specified with a foreign key "{key}" that does not point to the parent table "{table}".' => 'Odnos "{relation}" u active record klasi "{class}" je ispisan sa spoljnim kljuÄem "{key}", koji ne prikazuje na tabelu "{table}".', + 'The relation "{relation}" in active record class "{class}" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana sa nekompletnim spoljnim kljuÄem (foreign key). Spoljni kljuÄ (foreign key) mora se sastojati od kolona koje referenciraju obadvije tabele za spajanje (joining tables).', + 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". The foreign key does not point to either joining table.' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana pogreÅ¡nim spoljnim kljuÄem (foreign key) "{key}". Spoljni kljuÄ (foreign key) ne pokazuje ni na jednu tabelu za spajanje (joining tables).', + 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". There is no such column in the table "{table}".' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana sa pogreÅ¡nim spoljnim kljuÄem "{key}". U tabeli "{table}" ne postoji takva kolona.', + 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key. The columns in the key must match the primary keys of the table "{table}".' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana pogreÅ¡nim spoljnim kljuÄem (foreign key). Kolone spoljnog kljuÄa (foreign key) moraju biti iste kao i primarnog kljuÄa od tabele "{table}".', + 'The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key. The format of the foreign key must be "joinTable(fk1,fk2,...)".' => 'Odnos "{relation}" u active record klasi "{class}" je specificirana pogreÅ¡nim spoljnim kljuÄem (foreign key). Format spoljnog kljuÄa (foreign key) mora biti "joinTable(fk1,fk2,...)', + 'The requested view "{name}" was not found.' => 'zahtjevani pogled (view) "{name}" nije pronaÄ‘en.', + 'The stack is empty.' => 'Stek (stack) je prazna.', + 'The system is unable to find the requested action "{action}".' => 'Sistem ne može da pronaÄ‘e traženu akciju "{action}".', + 'The system view path "{path}" is not a valid directory.' => 'Put direktorija do sistemskog pogleda (system view) "{path}" nije ispravan.', + 'The table "{table}" for active record class "{class}" cannot be found in the database.' => 'Tabela "{table}" za active record klasu "{class}" ne može biti pronaÄ‘ena u bazi.', + 'The value for the primary key "{key}" is not supplied when querying the table "{table}".' => 'Vrijednost primarnog kljuÄa (primary key) "{key}" nije prosljeÄ‘ena prilikom izvrÅ¡enja upita nad tabelom "{table}".', + 'The verification code is incorrect.' => 'Verifikacioni kod je pogreÅ¡an.', + 'The view path "{path}" is not a valid directory.' => 'Put do prikaznog direktorija (view path) "{path}" nije važeći.', + 'Theme directory "{directory}" does not exist.' => 'Direktorijum za teme (theme directory) "{directory}" ne postoji.', + 'This content requires the Adobe Flash Player.' => 'Ovaj sadržaj zahtjeva Adobe Flash Player.', + 'Unable to add an item whose name is the same as an existing item.' => 'Ne mogu da dodam stavku sa istim imenom kao postojeća stavka.', + 'Unable to change the item name. The name "{name}" is already used by another item.' => 'Ne mogu da promjenim ime stavke (item name). Ime "{name}" već koristi neka druga stavka.', + 'Unable to create application state file "{file}". Make sure the directory containing the file exists and is writable by the Web server process.' => 'Ne mogu da kreiram aplikacioni fajl stanja (state file) "{file}". Budite sigurni da direktorijum koji sadrži fajl postoji i da je omogućeno pisanje od strane Web server procesa.', + 'Unable to lock file "{file}" for reading.' => 'Ne mogu da zakljuÄam fajl "{file}" za Äitanje.', + 'Unable to lock file "{file}" for writing.' => 'Ne mogu da zakljuÄam fajl "{file}" za upisivanje.', + 'Unable to read file "{file}".' => 'Ne mogu da proÄitam fajl "{file}".', + 'Unable to replay the action "{object}.{method}". The method does not exist.' => 'Ne mogu reproducirati (replay) "{object}.{method}". Metoda ne postoji.', + 'Unable to resolve the request "{route}".' => 'Ne mogu da rijeÅ¡im "{route}" zahtjev.', + 'Unable to write file "{file}".' => 'Ne mogu da upiÅ¡em fajl "{file}".', + 'Unknown authorization item "{name}".' => 'Nepoznata stavka ovlašćenja (authorization item) "{name}', + 'Unrecognized locale "{locale}".' => 'Lokalizacija nije prepoznata (unrecognized locale) "{locale}".', + 'View file "{file}" does not exist.' => 'View fajl "{file}" ne postoji.', + 'Yii application can only be created once.' => 'Yii aplikacija može biti kreirana samo jedanput.', + 'You are not authorized to perform this action.' => 'Niste autorizovani da izvrÅ¡ite ovu akciju.', + 'Your request is not valid.' => 'VaÅ¡ zahtjev nije ispravan.', + '{attribute} "{value}" has already been taken.' => '{attribute} "{value}" je već uzeta.', + '{attribute} "{value}" is invalid.' => '{attribute} "{value}" je pogreÅ¡an (neispravan).', + '{attribute} cannot accept more than {limit} files.' => '{attribute} ne prihvata viÅ¡e nego {limit} fajlova.', + '{attribute} cannot be blank.' => 'Morate popuniti polje {attribute}.', + '{attribute} is invalid.' => '{attribute} je pogreÅ¡an (neispravan).', + '{attribute} is not a valid URL.' => '{attribute} nije ispravan URL.', + '{attribute} is not a valid email address.' => '{attribute} nije ispravna email adresa.', + '{attribute} is not in the list.' => '{attribute} nije u listi.', + '{attribute} is of the wrong length (should be {length} characters).' => '{attribute} je pogreÅ¡ne dužine (treba biti {length} karaktera).', + '{attribute} is too big (maximum is {max}).' => '{attribute} je prevelik (maksimum je {max}).', + '{attribute} is too long (maximum is {max} characters).' => '{attribute} je predugaÄak (maksimum je {max} karaktera).', + '{attribute} is too short (minimum is {min} characters).' => '{attribute} je prekratak (minimum je {min} karaktera).', + '{attribute} is too small (minimum is {min}).' => '{attribute} je premali (minimum je {min}).', + '{attribute} must be a number.' => '{attribute} mora biti broj.', + '{attribute} must be an integer.' => '{attribute} mora biti cijeli broj (integer).', + '{attribute} must be either {true} or {false}.' => '{attribute} mora biti makar {true} ili {false}.', + '{attribute} must be greater than "{compareValue}".' => '{attribute} mora biti veći nego "{compareValue}".', + '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} mora biti veći nego "{compareValue}".', + '{attribute} must be less than "{compareValue}".' => '{attribute} mora biti manji nego "{compareValue}".', + '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} mora biti manji ili isti nego "{compareValue}".', + '{attribute} must be repeated exactly.' => '{attribute} mora biti taÄno ponovljen.', + '{attribute} must be {type}.' => '{attribute} mora biti {type}.', + '{attribute} must be {value}.' => '{attribute} mora biti {value}.', + '{attribute} must not be equal to "{compareValue}".' => '{attribute} ne smije biti isti kao "{compareValue}".', + '{className} does not support add() functionality.' => '{className} ne podržava add() funcionalnost.', + '{className} does not support delete() functionality.' => '{className} ne podržava delete() funkcionalnost.', + '{className} does not support flush() functionality.' => '{className} ne podržava flush() funkcionalnost.', + '{className} does not support get() functionality.' => '{className} ne podržava get() funkcionalnost.', + '{className} does not support set() functionality.' => '{className} ne podržava set() funkcionalnost.', + '{class} does not have a method named "{name}".' => '{class} nema metode imenom "{name}".', + '{class} does not have relation "{name}".' => '{class} nema odnosa "{name}".', + '{class} does not support fetching all table names.' => '{class} ne podržava dobavljanje svih naziva tabela.', + '{class} has an invalid validation rule. The rule must specify attributes to be validated and the validator name.' => '{class} ima pogreÅ¡no ovjereno pravilo (validation rule). Pravilo mora da specificira atribute koji ce biti ovjereni i ime ovjerenja.', + '{class} must specify "model" and "attribute" or "name" property values.' => '{class} mora da specificira "model" i "attribute" ili "name" svojstvo (property) vrijednosti.', + '{class}.allowAutoLogin must be set true in order to use cookie-based authentication.' => '{class}.allowAutoLogin mora biti podeÅ¡en na true da bi se koristila cookies autorizacija.', + '{class}::authenticate() must be implemented.' => '{class}::authenticate() metoda mora biti implementirana.', + '{controller} cannot find the requested view "{view}".' => '{controller} ne može da pronaÄ‘e zahtjevani view "{view}".', + '{controller} contains improperly nested widget tags in its view "{view}". A {widget} widget does not have an endWidget() call.' => '{controller} sadrži nepropisno ugnježdene widget tagove u svom pogledu (view) "{view}". {widget} widget nema endWidget() poziv.', + '{controller} has an extra endWidget({id}) call in its view.' => '{controller} ima suviÅ¡an endWidget({id}) poziv u svom view-u.', + '{widget} cannot find the view "{view}".' => '{widget} ne može da pronaÄ‘e view "{view}".', +); \ No newline at end of file diff --git a/web/framework-1.1.17/messages/hu/yii.php b/web/framework/messages/hu/yii.php similarity index 100% rename from web/framework-1.1.17/messages/hu/yii.php rename to web/framework/messages/hu/yii.php diff --git a/web/framework-1.1.17/messages/hu/zii.php b/web/framework/messages/hu/zii.php similarity index 100% rename from web/framework-1.1.17/messages/hu/zii.php rename to web/framework/messages/hu/zii.php diff --git a/web/framework-1.1.17/messages/id/yii.php b/web/framework/messages/id/yii.php similarity index 100% rename from web/framework-1.1.17/messages/id/yii.php rename to web/framework/messages/id/yii.php diff --git a/web/framework-1.1.17/messages/id/zii.php b/web/framework/messages/id/zii.php similarity index 100% rename from web/framework-1.1.17/messages/id/zii.php rename to web/framework/messages/id/zii.php diff --git a/web/framework-1.1.17/messages/it/yii.php b/web/framework/messages/it/yii.php similarity index 100% rename from web/framework-1.1.17/messages/it/yii.php rename to web/framework/messages/it/yii.php diff --git a/web/framework-1.1.17/messages/it/zii.php b/web/framework/messages/it/zii.php similarity index 100% rename from web/framework-1.1.17/messages/it/zii.php rename to web/framework/messages/it/zii.php diff --git a/web/framework-1.1.17/messages/ja/yii.php b/web/framework/messages/ja/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ja/yii.php rename to web/framework/messages/ja/yii.php diff --git a/web/framework-1.1.17/messages/ja/zii.php b/web/framework/messages/ja/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ja/zii.php rename to web/framework/messages/ja/zii.php diff --git a/web/framework-1.1.17/messages/kk/yii.php b/web/framework/messages/kk/yii.php similarity index 100% rename from web/framework-1.1.17/messages/kk/yii.php rename to web/framework/messages/kk/yii.php diff --git a/web/framework-1.1.17/messages/kk/zii.php b/web/framework/messages/kk/zii.php similarity index 100% rename from web/framework-1.1.17/messages/kk/zii.php rename to web/framework/messages/kk/zii.php diff --git a/web/framework-1.1.17/messages/ko_kr/yii.php b/web/framework/messages/ko_kr/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ko_kr/yii.php rename to web/framework/messages/ko_kr/yii.php diff --git a/web/framework-1.1.17/messages/ko_kr/zii.php b/web/framework/messages/ko_kr/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ko_kr/zii.php rename to web/framework/messages/ko_kr/zii.php diff --git a/web/framework-1.1.17/messages/lt/yii.php b/web/framework/messages/lt/yii.php similarity index 100% rename from web/framework-1.1.17/messages/lt/yii.php rename to web/framework/messages/lt/yii.php diff --git a/web/framework-1.1.17/messages/lt/zii.php b/web/framework/messages/lt/zii.php similarity index 100% rename from web/framework-1.1.17/messages/lt/zii.php rename to web/framework/messages/lt/zii.php diff --git a/web/framework-1.1.17/messages/lv/yii.php b/web/framework/messages/lv/yii.php similarity index 100% rename from web/framework-1.1.17/messages/lv/yii.php rename to web/framework/messages/lv/yii.php diff --git a/web/framework-1.1.17/messages/lv/zii.php b/web/framework/messages/lv/zii.php similarity index 100% rename from web/framework-1.1.17/messages/lv/zii.php rename to web/framework/messages/lv/zii.php diff --git a/web/framework-1.1.17/messages/nl/yii.php b/web/framework/messages/nl/yii.php similarity index 100% rename from web/framework-1.1.17/messages/nl/yii.php rename to web/framework/messages/nl/yii.php diff --git a/web/framework-1.1.17/messages/nl/zii.php b/web/framework/messages/nl/zii.php similarity index 100% rename from web/framework-1.1.17/messages/nl/zii.php rename to web/framework/messages/nl/zii.php diff --git a/web/framework-1.1.17/messages/no/yii.php b/web/framework/messages/no/yii.php similarity index 100% rename from web/framework-1.1.17/messages/no/yii.php rename to web/framework/messages/no/yii.php diff --git a/web/framework-1.1.17/messages/no/zii.php b/web/framework/messages/no/zii.php similarity index 100% rename from web/framework-1.1.17/messages/no/zii.php rename to web/framework/messages/no/zii.php diff --git a/web/framework-1.1.17/messages/pl/yii.php b/web/framework/messages/pl/yii.php similarity index 100% rename from web/framework-1.1.17/messages/pl/yii.php rename to web/framework/messages/pl/yii.php diff --git a/web/framework-1.1.17/messages/pl/zii.php b/web/framework/messages/pl/zii.php similarity index 100% rename from web/framework-1.1.17/messages/pl/zii.php rename to web/framework/messages/pl/zii.php diff --git a/web/framework-1.1.17/messages/pt/yii.php b/web/framework/messages/pt/yii.php similarity index 100% rename from web/framework-1.1.17/messages/pt/yii.php rename to web/framework/messages/pt/yii.php diff --git a/web/framework-1.1.17/messages/pt/zii.php b/web/framework/messages/pt/zii.php similarity index 100% rename from web/framework-1.1.17/messages/pt/zii.php rename to web/framework/messages/pt/zii.php diff --git a/web/framework-1.1.17/messages/pt_br/yii.php b/web/framework/messages/pt_br/yii.php similarity index 100% rename from web/framework-1.1.17/messages/pt_br/yii.php rename to web/framework/messages/pt_br/yii.php diff --git a/web/framework-1.1.17/messages/pt_br/zii.php b/web/framework/messages/pt_br/zii.php similarity index 100% rename from web/framework-1.1.17/messages/pt_br/zii.php rename to web/framework/messages/pt_br/zii.php diff --git a/web/framework-1.1.17/messages/ro/yii.php b/web/framework/messages/ro/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ro/yii.php rename to web/framework/messages/ro/yii.php diff --git a/web/framework-1.1.17/messages/ro/zii.php b/web/framework/messages/ro/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ro/zii.php rename to web/framework/messages/ro/zii.php diff --git a/web/framework-1.1.17/messages/ru/yii.php b/web/framework/messages/ru/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ru/yii.php rename to web/framework/messages/ru/yii.php diff --git a/web/framework-1.1.17/messages/ru/zii.php b/web/framework/messages/ru/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ru/zii.php rename to web/framework/messages/ru/zii.php diff --git a/web/framework-1.1.17/messages/sk/yii.php b/web/framework/messages/sk/yii.php similarity index 100% rename from web/framework-1.1.17/messages/sk/yii.php rename to web/framework/messages/sk/yii.php diff --git a/web/framework-1.1.17/messages/sk/zii.php b/web/framework/messages/sk/zii.php similarity index 100% rename from web/framework-1.1.17/messages/sk/zii.php rename to web/framework/messages/sk/zii.php diff --git a/web/framework-1.1.17/messages/sr_sr/yii.php b/web/framework/messages/sr_sr/yii.php similarity index 100% rename from web/framework-1.1.17/messages/sr_sr/yii.php rename to web/framework/messages/sr_sr/yii.php diff --git a/web/framework-1.1.17/messages/sr_sr/zii.php b/web/framework/messages/sr_sr/zii.php similarity index 100% rename from web/framework-1.1.17/messages/sr_sr/zii.php rename to web/framework/messages/sr_sr/zii.php diff --git a/web/framework-1.1.17/messages/sr_yu/yii.php b/web/framework/messages/sr_yu/yii.php similarity index 100% rename from web/framework-1.1.17/messages/sr_yu/yii.php rename to web/framework/messages/sr_yu/yii.php diff --git a/web/framework-1.1.17/messages/sr_yu/zii.php b/web/framework/messages/sr_yu/zii.php similarity index 100% rename from web/framework-1.1.17/messages/sr_yu/zii.php rename to web/framework/messages/sr_yu/zii.php diff --git a/web/framework-1.1.17/messages/sv/yii.php b/web/framework/messages/sv/yii.php similarity index 100% rename from web/framework-1.1.17/messages/sv/yii.php rename to web/framework/messages/sv/yii.php diff --git a/web/framework-1.1.17/messages/sv/zii.php b/web/framework/messages/sv/zii.php similarity index 100% rename from web/framework-1.1.17/messages/sv/zii.php rename to web/framework/messages/sv/zii.php diff --git a/web/framework-1.1.17/messages/ta_in/yii.php b/web/framework/messages/ta_in/yii.php similarity index 100% rename from web/framework-1.1.17/messages/ta_in/yii.php rename to web/framework/messages/ta_in/yii.php diff --git a/web/framework-1.1.17/messages/ta_in/zii.php b/web/framework/messages/ta_in/zii.php similarity index 100% rename from web/framework-1.1.17/messages/ta_in/zii.php rename to web/framework/messages/ta_in/zii.php diff --git a/web/framework-1.1.17/messages/th/yii.php b/web/framework/messages/th/yii.php similarity index 100% rename from web/framework-1.1.17/messages/th/yii.php rename to web/framework/messages/th/yii.php diff --git a/web/framework-1.1.17/messages/tr/yii.php b/web/framework/messages/tr/yii.php similarity index 100% rename from web/framework-1.1.17/messages/tr/yii.php rename to web/framework/messages/tr/yii.php diff --git a/web/framework-1.1.17/messages/tr/zii.php b/web/framework/messages/tr/zii.php similarity index 100% rename from web/framework-1.1.17/messages/tr/zii.php rename to web/framework/messages/tr/zii.php diff --git a/web/framework-1.1.17/messages/uk/yii.php b/web/framework/messages/uk/yii.php similarity index 100% rename from web/framework-1.1.17/messages/uk/yii.php rename to web/framework/messages/uk/yii.php diff --git a/web/framework-1.1.17/messages/uk/zii.php b/web/framework/messages/uk/zii.php similarity index 100% rename from web/framework-1.1.17/messages/uk/zii.php rename to web/framework/messages/uk/zii.php diff --git a/web/framework-1.1.17/messages/vi/yii.php b/web/framework/messages/vi/yii.php similarity index 100% rename from web/framework-1.1.17/messages/vi/yii.php rename to web/framework/messages/vi/yii.php diff --git a/web/framework-1.1.17/messages/vi/zii.php b/web/framework/messages/vi/zii.php similarity index 100% rename from web/framework-1.1.17/messages/vi/zii.php rename to web/framework/messages/vi/zii.php diff --git a/web/framework-1.1.17/messages/zh_cn/yii.php b/web/framework/messages/zh_cn/yii.php similarity index 100% rename from web/framework-1.1.17/messages/zh_cn/yii.php rename to web/framework/messages/zh_cn/yii.php diff --git a/web/framework-1.1.17/messages/zh_cn/zii.php b/web/framework/messages/zh_cn/zii.php similarity index 100% rename from web/framework-1.1.17/messages/zh_cn/zii.php rename to web/framework/messages/zh_cn/zii.php diff --git a/web/framework-1.1.17/messages/zh_tw/yii.php b/web/framework/messages/zh_tw/yii.php similarity index 100% rename from web/framework-1.1.17/messages/zh_tw/yii.php rename to web/framework/messages/zh_tw/yii.php diff --git a/web/framework-1.1.17/messages/zh_tw/zii.php b/web/framework/messages/zh_tw/zii.php similarity index 100% rename from web/framework-1.1.17/messages/zh_tw/zii.php rename to web/framework/messages/zh_tw/zii.php diff --git a/web/framework-1.1.17/test/CDbFixtureManager.php b/web/framework/test/CDbFixtureManager.php similarity index 100% rename from web/framework-1.1.17/test/CDbFixtureManager.php rename to web/framework/test/CDbFixtureManager.php diff --git a/web/framework-1.1.17/test/CDbTestCase.php b/web/framework/test/CDbTestCase.php similarity index 100% rename from web/framework-1.1.17/test/CDbTestCase.php rename to web/framework/test/CDbTestCase.php diff --git a/web/framework-1.1.17/test/CTestCase.php b/web/framework/test/CTestCase.php similarity index 100% rename from web/framework-1.1.17/test/CTestCase.php rename to web/framework/test/CTestCase.php diff --git a/web/framework-1.1.17/test/CWebTestCase.php b/web/framework/test/CWebTestCase.php similarity index 100% rename from web/framework-1.1.17/test/CWebTestCase.php rename to web/framework/test/CWebTestCase.php diff --git a/web/framework-1.1.17/utils/CDateTimeParser.php b/web/framework/utils/CDateTimeParser.php similarity index 100% rename from web/framework-1.1.17/utils/CDateTimeParser.php rename to web/framework/utils/CDateTimeParser.php diff --git a/web/framework-1.1.17/utils/CFileHelper.php b/web/framework/utils/CFileHelper.php similarity index 99% rename from web/framework-1.1.17/utils/CFileHelper.php rename to web/framework/utils/CFileHelper.php index 3608e14..7a3c059 100644 --- a/web/framework-1.1.17/utils/CFileHelper.php +++ b/web/framework/utils/CFileHelper.php @@ -153,6 +153,7 @@ class CFileHelper * @param array $options additional options. The following options are supported: * newDirMode - the permission to be set for newly copied directories (defaults to 0777); * newFileMode - the permission to be set for newly copied files (defaults to the current environment setting). + * @throws Exception */ protected static function copyDirectoryRecursive($src,$dst,$base,$fileTypes,$exclude,$level,$options) { @@ -199,6 +200,7 @@ class CFileHelper * level N means searching for those directories that are within N levels. * @param boolean $absolutePaths whether to return absolute paths or relative ones * @return array files found under the directory. + * @throws Exception */ protected static function findFilesRecursive($dir,$base,$fileTypes,$exclude,$level,$absolutePaths) { diff --git a/web/framework-1.1.17/utils/CFormatter.php b/web/framework/utils/CFormatter.php similarity index 100% rename from web/framework-1.1.17/utils/CFormatter.php rename to web/framework/utils/CFormatter.php diff --git a/web/framework-1.1.17/utils/CLocalizedFormatter.php b/web/framework/utils/CLocalizedFormatter.php similarity index 100% rename from web/framework-1.1.17/utils/CLocalizedFormatter.php rename to web/framework/utils/CLocalizedFormatter.php diff --git a/web/framework-1.1.17/utils/CMarkdownParser.php b/web/framework/utils/CMarkdownParser.php similarity index 100% rename from web/framework-1.1.17/utils/CMarkdownParser.php rename to web/framework/utils/CMarkdownParser.php diff --git a/web/framework-1.1.17/utils/CPasswordHelper.php b/web/framework/utils/CPasswordHelper.php similarity index 100% rename from web/framework-1.1.17/utils/CPasswordHelper.php rename to web/framework/utils/CPasswordHelper.php diff --git a/web/framework-1.1.17/utils/CPropertyValue.php b/web/framework/utils/CPropertyValue.php similarity index 97% rename from web/framework-1.1.17/utils/CPropertyValue.php rename to web/framework/utils/CPropertyValue.php index ddb9181..addcbe8 100644 --- a/web/framework-1.1.17/utils/CPropertyValue.php +++ b/web/framework/utils/CPropertyValue.php @@ -113,8 +113,14 @@ class CPropertyValue $len = strlen($value); if ($len >= 2 && $value[0] == '(' && $value[$len-1] == ')') { - eval('$array=array'.$value.';'); - return $array; + try + { + return eval('return array' . $value . ';'); + } + catch (ParseError $e) + { + return array(); + } } else return $len>0?array($value):array(); diff --git a/web/framework-1.1.17/utils/CTimestamp.php b/web/framework/utils/CTimestamp.php similarity index 100% rename from web/framework-1.1.17/utils/CTimestamp.php rename to web/framework/utils/CTimestamp.php diff --git a/web/framework-1.1.17/utils/CVarDumper.php b/web/framework/utils/CVarDumper.php similarity index 100% rename from web/framework-1.1.17/utils/CVarDumper.php rename to web/framework/utils/CVarDumper.php diff --git a/web/framework-1.1.17/utils/fileExtensions.php b/web/framework/utils/fileExtensions.php similarity index 100% rename from web/framework-1.1.17/utils/fileExtensions.php rename to web/framework/utils/fileExtensions.php diff --git a/web/framework-1.1.17/utils/mimeTypes.php b/web/framework/utils/mimeTypes.php similarity index 100% rename from web/framework-1.1.17/utils/mimeTypes.php rename to web/framework/utils/mimeTypes.php diff --git a/web/framework-1.1.17/validators/CBooleanValidator.php b/web/framework/validators/CBooleanValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CBooleanValidator.php rename to web/framework/validators/CBooleanValidator.php diff --git a/web/framework-1.1.17/validators/CCaptchaValidator.php b/web/framework/validators/CCaptchaValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CCaptchaValidator.php rename to web/framework/validators/CCaptchaValidator.php diff --git a/web/framework-1.1.17/validators/CCompareValidator.php b/web/framework/validators/CCompareValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CCompareValidator.php rename to web/framework/validators/CCompareValidator.php diff --git a/web/framework-1.1.17/validators/CDateValidator.php b/web/framework/validators/CDateValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CDateValidator.php rename to web/framework/validators/CDateValidator.php diff --git a/web/framework-1.1.17/validators/CDefaultValueValidator.php b/web/framework/validators/CDefaultValueValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CDefaultValueValidator.php rename to web/framework/validators/CDefaultValueValidator.php diff --git a/web/framework-1.1.17/validators/CEmailValidator.php b/web/framework/validators/CEmailValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CEmailValidator.php rename to web/framework/validators/CEmailValidator.php diff --git a/web/framework-1.1.17/validators/CExistValidator.php b/web/framework/validators/CExistValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CExistValidator.php rename to web/framework/validators/CExistValidator.php diff --git a/web/framework-1.1.17/validators/CFileValidator.php b/web/framework/validators/CFileValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CFileValidator.php rename to web/framework/validators/CFileValidator.php diff --git a/web/framework-1.1.17/validators/CFilterValidator.php b/web/framework/validators/CFilterValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CFilterValidator.php rename to web/framework/validators/CFilterValidator.php diff --git a/web/framework-1.1.17/validators/CInlineValidator.php b/web/framework/validators/CInlineValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CInlineValidator.php rename to web/framework/validators/CInlineValidator.php diff --git a/web/framework-1.1.17/validators/CNumberValidator.php b/web/framework/validators/CNumberValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CNumberValidator.php rename to web/framework/validators/CNumberValidator.php diff --git a/web/framework-1.1.17/validators/CRangeValidator.php b/web/framework/validators/CRangeValidator.php similarity index 97% rename from web/framework-1.1.17/validators/CRangeValidator.php rename to web/framework/validators/CRangeValidator.php index 27a703d..a15b6ae 100644 --- a/web/framework-1.1.17/validators/CRangeValidator.php +++ b/web/framework/validators/CRangeValidator.php @@ -20,7 +20,7 @@ * return array( * array('text, tag', 'required'), * array('text, 'type', 'type' => 'string'), - * array('tag, 'in', 'range' => array('php', 'mysql', 'jquery')), + * array('tag', 'in', 'range' => array('php', 'mysql', 'jquery')), * ); * } * } @@ -121,4 +121,4 @@ if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '').($this->not ? "jQue } "; } -} \ No newline at end of file +} diff --git a/web/framework-1.1.17/validators/CRegularExpressionValidator.php b/web/framework/validators/CRegularExpressionValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CRegularExpressionValidator.php rename to web/framework/validators/CRegularExpressionValidator.php diff --git a/web/framework-1.1.17/validators/CRequiredValidator.php b/web/framework/validators/CRequiredValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CRequiredValidator.php rename to web/framework/validators/CRequiredValidator.php diff --git a/web/framework-1.1.17/validators/CSafeValidator.php b/web/framework/validators/CSafeValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CSafeValidator.php rename to web/framework/validators/CSafeValidator.php diff --git a/web/framework-1.1.17/validators/CStringValidator.php b/web/framework/validators/CStringValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CStringValidator.php rename to web/framework/validators/CStringValidator.php diff --git a/web/framework-1.1.17/validators/CTypeValidator.php b/web/framework/validators/CTypeValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CTypeValidator.php rename to web/framework/validators/CTypeValidator.php diff --git a/web/framework-1.1.17/validators/CUniqueValidator.php b/web/framework/validators/CUniqueValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CUniqueValidator.php rename to web/framework/validators/CUniqueValidator.php diff --git a/web/framework-1.1.17/validators/CUnsafeValidator.php b/web/framework/validators/CUnsafeValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CUnsafeValidator.php rename to web/framework/validators/CUnsafeValidator.php diff --git a/web/framework-1.1.17/validators/CUrlValidator.php b/web/framework/validators/CUrlValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CUrlValidator.php rename to web/framework/validators/CUrlValidator.php diff --git a/web/framework-1.1.17/validators/CValidator.php b/web/framework/validators/CValidator.php similarity index 100% rename from web/framework-1.1.17/validators/CValidator.php rename to web/framework/validators/CValidator.php diff --git a/web/framework-1.1.17/vendors/Net_IDNA2/LICENSE.txt b/web/framework/vendors/Net_IDNA2/LICENSE.txt similarity index 100% rename from web/framework-1.1.17/vendors/Net_IDNA2/LICENSE.txt rename to web/framework/vendors/Net_IDNA2/LICENSE.txt diff --git a/web/framework-1.1.17/vendors/Net_IDNA2/Net/IDNA2.php b/web/framework/vendors/Net_IDNA2/Net/IDNA2.php similarity index 100% rename from web/framework-1.1.17/vendors/Net_IDNA2/Net/IDNA2.php rename to web/framework/vendors/Net_IDNA2/Net/IDNA2.php diff --git a/web/framework-1.1.17/vendors/Net_IDNA2/Net/IDNA2/Exception.php b/web/framework/vendors/Net_IDNA2/Net/IDNA2/Exception.php similarity index 100% rename from web/framework-1.1.17/vendors/Net_IDNA2/Net/IDNA2/Exception.php rename to web/framework/vendors/Net_IDNA2/Net/IDNA2/Exception.php diff --git a/web/framework-1.1.17/vendors/Net_IDNA2/Net/IDNA2/Exception/Nameprep.php b/web/framework/vendors/Net_IDNA2/Net/IDNA2/Exception/Nameprep.php similarity index 100% rename from web/framework-1.1.17/vendors/Net_IDNA2/Net/IDNA2/Exception/Nameprep.php rename to web/framework/vendors/Net_IDNA2/Net/IDNA2/Exception/Nameprep.php diff --git a/web/framework-1.1.17/vendors/README.html b/web/framework/vendors/README.html similarity index 93% rename from web/framework-1.1.17/vendors/README.html rename to web/framework/vendors/README.html index a0e5fd5..0a2bc5f 100644 --- a/web/framework-1.1.17/vendors/README.html +++ b/web/framework/vendors/README.html @@ -74,7 +74,7 @@ Please refer to the detailed license information as shown below: CTimestamp - Text_Highlighter - Generic Syntax Highlighter (v0.7.0 beta) + Text_Highlighter - Generic Syntax Highlighter (v0.7.3 beta) The PHP License CTextHighlighter (note: many PHP files are modified to make them workable in PHP 5 strict mode and their PEAR dependency are also removed.) @@ -84,7 +84,7 @@ Please refer to the detailed license information as shown below: CGettextMoFile - HTML Purifier (v4.5.0) + HTML Purifier (v4.9.2) LGPL CHtmlPurifier @@ -113,6 +113,11 @@ Please refer to the detailed license information as shown below: MIT CWebLogRoute + + Zend Escaper - April 1 2015 + BSD + CJavaScript + diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter.php b/web/framework/vendors/TextHighlighter/Text/Highlighter.php similarity index 98% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter.php index 4823feb..bd0548b 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter.php +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter.php @@ -46,7 +46,9 @@ if (!defined('HL_NUMBERS_LI')) { /** * for our purpose, it is infinity */ -define ('HL_INFINITY', 1000000000); +if (!defined('HL_INFINITY')) { + define('HL_INFINITY', 1000000000); +} // }}} @@ -81,7 +83,7 @@ define ('HL_INFINITY', 1000000000); * Usage example * *require_once 'Text/Highlighter.php'; - *$hlSQL =& Text_Highlighter::factory('SQL',array('numbers'=>true)); + *$hlSQL = Text_Highlighter::factory('SQL',array('numbers'=>true)); *echo $hlSQL->highlight('SELECT * FROM table a WHERE id = 12'); * * diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/ABAP.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/ABAP.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/ABAP.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/ABAP.php diff --git a/web/framework/vendors/TextHighlighter/Text/Highlighter/AVRC.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/AVRC.php new file mode 100644 index 0000000..319c7e9 --- /dev/null +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter/AVRC.php @@ -0,0 +1,877 @@ + + + * + */ + + +/** + * Auto-generated class. AVRC syntax highlighting + * + * @author Andrey Demenev + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.7.0 + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_AVRC extends Text_Highlighter +{ + var $_language = 'avrc'; + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 0 => '/((?i)\\\\)/', + 1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 2 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 3 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 4 => '//', + 5 => '/((?i)")|((?i)<)/', + 6 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 7 => '/((?i)\\$\\w+\\s*:.+\\$)/', + 8 => '/((?i)\\$\\w+\\s*:.+\\$)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 0 => + array ( + 0 => 0, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 0, + 1 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 2, + 8 => 0, + 9 => 0, + ), + 7 => + array ( + 0 => 0, + ), + 8 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 0 => + array ( + 0 => '', + ), + 1 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 2 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 3 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 'quotes', + 1 => 'quotes', + ), + 6 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => 'mlcomment', + 9 => 'comment', + ), + 7 => + array ( + 0 => '', + ), + 8 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 0 => + array ( + 0 => 'special', + ), + 1 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 2 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 3 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 'string', + 1 => 'string', + ), + 6 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'identifier', + 4 => 'number', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'mlcomment', + 9 => 'comment', + ), + 7 => + array ( + 0 => 'inlinedoc', + ), + 8 => + array ( + 0 => 'inlinedoc', + ), + ); + $this->_end = array ( + 0 => '/(?i)"/', + 1 => '/(?i)\\}/', + 2 => '/(?i)\\)/', + 3 => '/(?i)\\]/', + 4 => '/(?i)>/', + 5 => '/(?mi)(? '/(?mi)(? '/(?i)\\*\\//', + 8 => '/(?mi)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 0 => + array ( + 0 => -1, + ), + 1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 2 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 0, + 1 => 4, + ), + 6 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => 7, + 9 => 8, + ), + 7 => + array ( + 0 => -1, + ), + 8 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 0 => + array ( + 0 => + array ( + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => -1, + 1 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 4 => + array ( + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => -1, + 9 => -1, + ), + 7 => + array ( + 0 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => NULL, + 1 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + ), + 7 => + array ( + 0 => NULL, + ), + 8 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 0 => + array ( + 0 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => false, + 1 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 7 => + array ( + 0 => false, + ), + 8 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + 'registers' => 'reserved', + 'types' => 'types', + 'Common Macros' => 'prepro', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +} \ No newline at end of file diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/CPP.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/CPP.php similarity index 94% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/CPP.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/CPP.php index eccaa08..229a681 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/CPP.php +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter/CPP.php @@ -53,7 +53,7 @@ class Text_Highlighter_CPP extends Text_Highlighter $this->_options = $options; $this->_regs = array ( - -1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + -1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', 0 => '/((?i)\\\\)/', 1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', 2 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', @@ -75,8 +75,12 @@ class Text_Highlighter_CPP extends Text_Highlighter 5 => 0, 6 => 0, 7 => 0, - 8 => 0, + 8 => 2, 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, ), 0 => array ( @@ -171,11 +175,15 @@ class Text_Highlighter_CPP extends Text_Highlighter 2 => 'brackets', 3 => 'brackets', 4 => '', - 5 => 'prepro', - 6 => 'prepro', + 5 => '', + 6 => '', 7 => '', - 8 => 'mlcomment', - 9 => 'comment', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', ), 0 => array ( @@ -270,11 +278,15 @@ class Text_Highlighter_CPP extends Text_Highlighter 2 => 'code', 3 => 'code', 4 => 'identifier', - 5 => 'prepro', - 6 => 'code', + 5 => 'number', + 6 => 'number', 7 => 'number', - 8 => 'mlcomment', - 9 => 'comment', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', ), 0 => array ( @@ -380,11 +392,15 @@ class Text_Highlighter_CPP extends Text_Highlighter 2 => 2, 3 => 3, 4 => -1, - 5 => 5, - 6 => 6, + 5 => -1, + 6 => -1, 7 => -1, - 8 => 7, - 9 => 8, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, ), 0 => array ( @@ -484,13 +500,25 @@ class Text_Highlighter_CPP extends Text_Highlighter 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', ), - 5 => -1, - 6 => -1, + 5 => + array ( + ), + 6 => + array ( + ), 7 => array ( ), - 8 => -1, + 8 => + array ( + ), 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, ), 0 => array ( @@ -740,6 +768,10 @@ class Text_Highlighter_CPP extends Text_Highlighter 7 => false, 8 => false, 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, ), 0 => array ( diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/CSS.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/CSS.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/CSS.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/CSS.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/DIFF.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/DIFF.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/DIFF.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/DIFF.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/DTD.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/DTD.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/DTD.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/DTD.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Generator.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Generator.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Generator.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Generator.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/HTML.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/HTML.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/HTML.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/HTML.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/JAVA.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/JAVA.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/JAVA.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/JAVA.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/JAVASCRIPT.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/JAVASCRIPT.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/JAVASCRIPT.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/JAVASCRIPT.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/MYSQL.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/MYSQL.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/MYSQL.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/MYSQL.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PERL.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/PERL.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PERL.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/PERL.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PHP.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/PHP.php similarity index 99% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PHP.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/PHP.php index 94b3733..70da653 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PHP.php +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter/PHP.php @@ -46,7 +46,7 @@ class Text_Highlighter_PHP extends Text_Highlighter $this->_options = $options; $this->_regs = array ( - -1 => '/((?i)(\\<\\?(php|=)?)?)/', + -1 => '/((?i)\\<\\?(php|=)?)/', 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)\\?\\>)|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', @@ -62,7 +62,7 @@ class Text_Highlighter_PHP extends Text_Highlighter $this->_counts = array ( -1 => array ( - 0 => 2, + 0 => 1, ), 0 => array ( diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PYTHON.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/PYTHON.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/PYTHON.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/PYTHON.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/RUBY.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/RUBY.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/RUBY.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/RUBY.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Array.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Array.php similarity index 97% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Array.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Array.php index ef3ffec..b7442d0 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Array.php +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Array.php @@ -99,6 +99,7 @@ class Text_Highlighter_Renderer_Array extends Text_Highlighter_Renderer { // normalize whitespace and tabs $str = str_replace("\r\n","\n", $str); + $str = str_replace("\r","\n", $str); // some browsers refuse to display empty lines $str = preg_replace('~^$~m'," ", $str); $str = str_replace("\t",str_repeat(' ', $this->_tabsize), $str); @@ -141,7 +142,9 @@ class Text_Highlighter_Renderer_Array extends Text_Highlighter_Renderer */ function acceptToken($class, $content) { - + if (!is_array($this->_output)) { + $this->_output = array(); + } $theClass = $this->_getFullClassName($class); if ($this->_htmlspecialchars) { diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/BB.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/BB.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/BB.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/BB.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php similarity index 93% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php index 2bba33b..0260dff 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Console.php @@ -176,14 +176,19 @@ class Text_Highlighter_Renderer_Console extends Text_Highlighter_Renderer function finalize() { if ($this->_numbers) { - $nlines = substr_count($this->_output, "\n") + 1; - $len = strlen($nlines); - $i = 1; - $this->_output = preg_replace('~^~em', '" " . str_pad($i++, $len, " ", STR_PAD_LEFT) . ": "', $this->_output); + $this->_output = preg_replace_callback('~^~m', array($this, 'replaceCallback'), $this->_output); } $this->_output .= HL_CONSOLE_DEFCOLOR . "\n"; } + function replaceCallback() + { + $nlines = substr_count($this->_output, "\n") + 1; + $len = strlen($nlines); + $i = 1; + return " " . str_pad($i++, $len, " ", STR_PAD_LEFT) . ": "; + } + /** * Get generated output * diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Html.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Html.php similarity index 94% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Html.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Html.php index dcf37ab..b9cb4c6 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/Html.php +++ b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/Html.php @@ -52,11 +52,15 @@ if (!defined('HL_NUMBERS_LI')) { /** * Use numbered list */ -define ('HL_NUMBERS_OL', 1); +if (!defined('HL_NUMBERS_OL')) { + define('HL_NUMBERS_OL', 1); +} /** * Use non-numbered list */ -define ('HL_NUMBERS_UL', 3); +if (!defined('HL_NUMBERS_UL')) { + define('HL_NUMBERS_UL', 3); +} /**#@-*/ @@ -188,10 +192,12 @@ class Text_Highlighter_Renderer_Html extends Text_Highlighter_Renderer_Array 'inlinetags' => 'hl-inlinetags', 'mlcomment' => 'hl-mlcomment', 'number' => 'hl-number', + 'prepro' => 'hl-prepro', 'quotes' => 'hl-quotes', 'reserved' => 'hl-reserved', 'special' => 'hl-special', 'string' => 'hl-string', + 'types' => 'hl-types', 'url' => 'hl-url', 'var' => 'hl-var', ); @@ -289,8 +295,6 @@ class Text_Highlighter_Renderer_Html extends Text_Highlighter_Renderer_Array // get parent's output parent::finalize(); $output = parent::getOutput(); - if(empty($output)) - return; $html_output = ''; @@ -320,18 +324,28 @@ class Text_Highlighter_Renderer_Html extends Text_Highlighter_Renderer_Array $span = $this->_getStyling($the_class); $decorated_output = $this->_decorate($content, $key); - //print "
 token = ".var_export($token, true)." -- span = " . htmlentities($span). "-- deco = ".$decorated_output."
\n"; - $html_output .= sprintf($span, $decorated_output); + + + if ($numbers_li == true) { + // end span tags before end of li, and re-open on next line + $lastSpanTag = str_replace("%s", "", $span); + $span = sprintf($span, $decorated_output); + $span = str_replace("\n", "\n
  • $lastSpanTag ", $span); + $html_output .= $span; + } else { + $html_output .= sprintf($span, $decorated_output); + } + + } // format lists if (!empty($this->_numbers) && $numbers_li == true) { - //$html_output = "
    ".$html_output."
    "; + // additional whitespace for browsers that do not display // empty list items correctly - $this->_output = '
  •  ' . str_replace("\n", "
  • \n
  •  ", $html_output) . '
  • '; - + $this->_output = '
  •  ' . $html_output . '
  • '; $start = ''; if ($this->_numbers == HL_NUMBERS_OL && intval($this->_numbers_start) > 0) { diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/JSON.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/JSON.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/JSON.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/JSON.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/XML.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/XML.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/Renderer/XML.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/Renderer/XML.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/SH.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/SH.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/SH.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/SH.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/SQL.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/SQL.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/SQL.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/SQL.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/VBSCRIPT.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/VBSCRIPT.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/VBSCRIPT.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/VBSCRIPT.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/XML.php b/web/framework/vendors/TextHighlighter/Text/Highlighter/XML.php similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/Highlighter/XML.php rename to web/framework/vendors/TextHighlighter/Text/Highlighter/XML.php diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/README b/web/framework/vendors/TextHighlighter/Text/README similarity index 93% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/README rename to web/framework/vendors/TextHighlighter/Text/README index 09b898c..88f71ae 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/README +++ b/web/framework/vendors/TextHighlighter/Text/README @@ -1,455 +1,455 @@ -# $Id: README,v 1.2 2007/06/13 10:09:47 ssttoo Exp $ - -Introduction -============ - -Text_Highlighter is a class for syntax highlighting. The main idea is to -simplify creation of subclasses implementing syntax highlighting for -particular language. Subclasses do not implement any new functioanality, they -just provide syntax highlighting rules. The rules sources are in XML format. -To create a highlighter for a language, there is no need to code a new class -manually. Simply describe the rules in XML file and use Text_Highlighter_Generator -to create a new class. - - -This document does not contain a formal description of API - it is very -simple, and I believe providing some examples of code is sufficient. - - -Highlighter XML source -====================== - -Basics ------- - -Creating a new syntax highlighter begins with describing the highlighting -rules. There are two basic elements: block and region. A block is just a -portion of text matching a regular expression and highlighted with a single -color. Keyword is an example of a block. A region is defined by two regular -expressions: one for start of region, and another for the end. The main -difference from a block is that a region can contain blocks and regions -(including same-named regions). An example of a region is a group of -statements enclosed in curly brackets (this is used in many languages, for -example PHP and C). Also, characters matching start and end of a region may be -highlighted with their own color, and region contents with another. - -Blocks and regions may be declared as contained. Contained blocks and regions -can only appear inside regions. If a region or a block is not declared as -contained, it can appear both on top level and inside regions. Block or region -declared as not-contained can only appear on top level. - -For any region, a list of blocks and regions that can appear inside this -region can be specified. - -In this document, the term "color group" is used. Chunks of text assigned to -same color group will be highlighted with same color. Note that in versions -prior 0.5.0 color goups were refered as CSS classes, but since 0.5.0 not only -HTML output is supported, so "color group" is more appropriate term. - -Elements --------- - -The toplevel element is . Attribute lang is required and denotes -the name of the language. Its value is used as a part of generated class name, -and must only contain letters, digits and underscores. Optional attribute -case, when given value yes, makes the language case sensitive (default is case -insensitive). Allowed subelements are: - - * : Information about the authors of the file. - : Information about a single author of the file. (May be used - multiple times, one per author.) - - name="...": Author's name. Required. - - email="...": Author's email address. Optional. - - * : Default color group. - - innerGroup="...": color group name. Required. - - * : Region definition - - name="...": Region name. Required. - - innerGroup="...": Default color group of region contents. Required. - - delimGroup="...": color group of start and end of region. Optional, - defaults to value of innerGroup attribute. - - start="...", end="...": Regular expression matching start and end - of region. Required. Regular expression delimiters are optional, but - if you need to specify delimiter, use /. The only case when the - delimiters are needed, is specifying regular expression modifiers, - such as m or U. Examples: \/\* or /$/m. - - contained="yes": Marks region as contained. - - never-contained="yes": Marks region as not-contained. - - : Elements allowed inside this region. - - all="yes" Region can contain any other region or block - (except not-contained). May be used multiple times. - - Do not allow certain regions or blocks. - - region="..." Name of region not allowed within - current region. - - block="..." Name of block not allowed within - current region. - - region="..." Name of region allowed within current region. - - block="..." Name of block allowed within current region. - - Only allow this region within certain regions. May be - used multiple times. - - block="..." Name of parent region - - * : Block definition - - name="...": Block name. Required. - - innerGroup="...": color group of block contents. Optional. If not - specified, color group of parent region or default color group will be - used. One would only want to omit this attribute if there are - keyword groups (see below) inherited from this block, and no special - highlighting should apply when the block does not match the keyword. - - match="..." Regular expression matching the block. Required. - Regular expression delimiters are optional, but if you need to - specify delimiter, use /. The only case when the delimiters are - needed, is specifying regular expression modifiers, such as m or U. - Examples: #|\/\/ or /$/m. - - contained="yes": Marks block as contained. - - never-contained="yes": Marks block as not-contained. - - Only allow this block within certain regions. May be used - multiple times. - - block="..." Name of parent region - - multiline="yes": Marks block as multi-line. By default, whole - blocks are assumed to reside in a single line. This make the things - faster. If you need to declare a multi-line block, use this - attribute. - - : Assigns another color group to a part of the block that - matched a subpattern. - - index="n": Subpattern index. Required. - - innerGroup="...": color group name. Required. - - This is an example from CSS highlighter: the measure is matched as - a whole, but the measurement units are highlighted with different - color. - - - - - - - * : Keyword group definition. Keyword groups are useful when you - want to highlight some words that match a condition for a block with a - different color. Keywords are defined with literal match, not regular - expressions. For example, you have a block named identifier matching a - general identifier, and want to highlight reserved words (which match - this block as well) with different color. You inherit a keyword group - "reserved" from "identifier" block. - - name="...": Keyword group. Required. - - ifdef="...", ifndef="..." : Conditional declaration. See - "Conditions" below. - - inherits="...": Inherited block name. Required. - - innerGroup="...": color group of keyword group. Required. - - case="yes|no": Overrides case-sensitivity of the language. - Optional, defaults to global value. - - : Single keyword definition. - - match="..." The keyword. Note: this is not a regular - expression, but literal match (possibly case insensitive). - -Note that for BC reasons element partClass is alias for partGroup, and -attributes innerClass and delimClass are aliases of innerGroup and -delimGroup, respectively. - - -Conditions ----------- - -Conditional declarations allow enabling or disabling certain highlighting -rules at runtime. For example, Java highlighter has a very big list of -keywords matching Java standard classes. Finding a match in this list can take -much time. For that reason, corresponding keyword group is declared with -"ifdef" attribute : - - - - - - ... - ... - - - - - -This keyword group will be only enabled when "java.builtins" is passed as an -element of "defines" option: - - $options = array( - 'defines' => array( - 'java.builtins', - ), - 'numbers' => HL_NUMBERS_TABLE, - ); - $highlighter =& Text_Highlighter::factory('java', $options); - -"ifndef" attribute has reverse meaning. - -Currently, "ifdef" and "ifndef" attributes are only supported for -tag. - - - -Class generation -================ - -Creating XML description of highlighting rules is the most complicated part of -the process. To generate the class, you need just few lines of code: - - generate(); - $generator->saveCode('PHP.php'); - ?> - - - -Command-line class generation tool -================================== - -Example from previous section looks pretty simple, but it does not handle any -errors which may occur during parsing of XML source. The package provides a -command-line script to make generation of classes even more simple, and takes -care of possible errors. It is called generate (on Unix/Linux) or generate.bat -(on Windows). This script is able to process multiple files in one run, and -also to process XML from standard input and write generated code to standard -output. - - Usage: - generate options - - Options: - -x filename, --xml=filename - source XML file. Multiple input files can be specified, in which - case each -x option must be followed by -p unless -d is specified - Defaults to stdin - -p filename, --php=filename - destination PHP file. Defaults to stdout. If specied multiple times, - each -p must follow -x - -d dirname, --dir=dirname - Default destination directory. File names will be taken from XML input - ("lang" attribute of tag) - -h, --help - This help - -Examples - - Read from php.xml, write to PHP.php - - generate -x php.xml -p PHP.php - - Read from php.xml, write to standard output - - generate -x php.xml - - Read from php.xml, write to PHP.php, read from xml.xml, write to XML.php - - generate -x php.xml -p PHP.php -x xml.xml -p XML.php - - Read from php.xml, write to /some/dir/PHP.php, read from xml.xml, write to - /some/dir/XML.php (assuming that xml.xml contains , and - php.xml contains ) - - generate -x php.xml -x xml.xml -d /some/dir/ - - - -Renderers -========= - -Introduction ------------- - -Text_Highlighter supports renderes. Using renderers, you can get output in -different formats. Two renderers are included in the package: - - - HTML renderer. Generates HTML output. A style sheet should be linked to - the document to display colored text - - - Console renderer. Can be used to output highlighted text to - color-capable terminals, either directly or trough less -r - - -Renderers API -------------- - -Renderers are subclasses of Text_Highlighter_Renderer. Renderer should -override at least two methods - acceptToken and getOutput. Overriding other -methods is optional, depending on the nature of renderer's output and details -of implementation. - - string reset() - resets renderer state. This method is called every time before a new - source file is highlighted. - - string preprocess(string $code) - preprocesses code. Can be used, for example, to normalize whitespace - before highlighting. Returns preprocessed string. - - void acceptToken(string $group, string $content) - the core method of the renderer. Highlighter passes chunks of text to - this method in $content, and color group in $group - - void finalize() - signals the renderer that no more tokens are available. - - mixed getOutput() - returns generated output. - - -Setting renderer options --------------------------------- - -Renderers accept an optional argument to their constructor - options array. -Elements of this array are renderer-specific. - -HTML renderer -------------- - -HTML renderer produces HTML output with optional line numbering. The renderer -itself does not provide information about actual colors of highlighted text. -Instead, is used, where XXX is replaced with color group -name (hl-var, hl-string, etc.). It is up to you to create a CSS stylesheet. -If 'use_language' option with value evaluating to true was passed, class names -will be formatted as "LANG-hl-XXX", where LANG is language name as defined in -highlighter XML source ("lang" attribute of tag) in lower case. - -There are 3 special CSS classes: - - hl-main - this class applies to whole output or right table column, - depending on 'numbers' option - hl-gutter - applies to left column in table - hl-table - applies to whole table - -HTML renderer accepts following options (each being optional): - - * numbers - line numbering style. - 0 - no numbering (default) - HL_NUMBERS_LI - use
      for line numbering - HL_NUMBERS_TABLE - create a 2-column table, with line numbers in left - column and highlighted text in right column - - * tabsize - tabulation size. Defaults to 4 - - Example: - - require_once 'Text/Highlighter/Renderer/Html.php'; - $options = array( - 'numbers' => HL_NUMBERS_LI, - 'tabsize' => 8, - ); - $renderer =& new Text_Highlighter_Renderer_HTML($options); - -Console renderer ----------------- - -Console renderer produces output for displaying on a color-capable terminal, -either directly or through less -r, using ANSI escape sequences. By default, -this renderer only highlights most common color groups. Additional colors -can be specified using 'colors' option. This renderer also accepts 'numbers' -option - a boolean value, and 'tabsize' option. - - Example : - - require_once 'Text/Highlighter/Renderer/Console.php'; - $colors = array( - 'prepro' => "\033[35m", - 'types' => "\033[32m", - ); - $options = array( - 'numbers' => true, - 'tabsize' => 8, - 'colors' => $colors, - ); - $renderer =& new Text_Highlighter_Renderer_Console($options); - - -ANSI color escape sequences have the following format: - - ESC[#;#;....;#m - -where ESC is character with ASCII code 27 (033 octal, 0x1B hexadecimal). # is -one of the following: - - 0 for normal display - 1 for bold on - 4 underline (mono only) - 5 blink on - 7 reverse video on - 8 nondisplayed (invisible) - 30 black foreground - 31 red foreground - 32 green foreground - 33 yellow foreground - 34 blue foreground - 35 magenta foreground - 36 cyan foreground - 37 white foreground - 40 black background - 41 red background - 42 green background - 43 yellow background - 44 blue background - 45 magenta background - 46 cyan background - 47 white background - - -How to use Text_Highlighter class -================================= - -Creating a highlighter object ------------------------------ - -To create a highlighter for a certain language, use Text_Highlighter::factory() -static method: - - require_once 'Text/Highlighter.php'; - $hl =& Text_Highlighter::factory('php'); - - -Setting a renderer ------------------- - -Actual output is produced by a renderer. - - require_once 'Text/Highlighter.php'; - require_once 'Text/Highlighter/Renderer/Html.php'; - $options = array( - 'numbers' => HL_NUMBERS_LI, - 'tabsize' => 8, - ); - $renderer =& new Text_Highlighter_Renderer_HTML($options); - $hl =& Text_Highlighter::factory('php'); - $hl->setRenderer($renderer); - -Note that for BC reasons, it is possible to use highlighter without setting a -renderer. If no renderer is set, HTML renderer will be used by default. In -this case, you should pass options as second parameter to factory method. The -following example works exactly as previous one: - - require_once 'Text/Highlighter.php'; - $options = array( - 'numbers' => HL_NUMBERS_LI, - 'tabsize' => 8, - ); - $hl =& Text_Highlighter::factory('php', $options); - - -Getting output --------------- - -And finally, do the highlighting and get the output: - - require_once 'Text/Highlighter.php'; - require_once 'Text/Highlighter/Renderer/Html.php'; - $options = array( - 'numbers' => HL_NUMBERS_LI, - 'tabsize' => 8, - ); - $renderer =& new Text_Highlighter_Renderer_HTML($options); - $hl =& Text_Highlighter::factory('php'); - $hl->setRenderer($renderer); - $html = $hl->highlight(file_get_contents('example.php')); - -# vim: set autoindent tabstop=4 shiftwidth=4 softtabstop=4 tw=78: */ - +# $Id$ + +Introduction +============ + +Text_Highlighter is a class for syntax highlighting. The main idea is to +simplify creation of subclasses implementing syntax highlighting for +particular language. Subclasses do not implement any new functioanality, they +just provide syntax highlighting rules. The rules sources are in XML format. +To create a highlighter for a language, there is no need to code a new class +manually. Simply describe the rules in XML file and use Text_Highlighter_Generator +to create a new class. + + +This document does not contain a formal description of API - it is very +simple, and I believe providing some examples of code is sufficient. + + +Highlighter XML source +====================== + +Basics +------ + +Creating a new syntax highlighter begins with describing the highlighting +rules. There are two basic elements: block and region. A block is just a +portion of text matching a regular expression and highlighted with a single +color. Keyword is an example of a block. A region is defined by two regular +expressions: one for start of region, and another for the end. The main +difference from a block is that a region can contain blocks and regions +(including same-named regions). An example of a region is a group of +statements enclosed in curly brackets (this is used in many languages, for +example PHP and C). Also, characters matching start and end of a region may be +highlighted with their own color, and region contents with another. + +Blocks and regions may be declared as contained. Contained blocks and regions +can only appear inside regions. If a region or a block is not declared as +contained, it can appear both on top level and inside regions. Block or region +declared as not-contained can only appear on top level. + +For any region, a list of blocks and regions that can appear inside this +region can be specified. + +In this document, the term "color group" is used. Chunks of text assigned to +same color group will be highlighted with same color. Note that in versions +prior 0.5.0 color goups were refered as CSS classes, but since 0.5.0 not only +HTML output is supported, so "color group" is more appropriate term. + +Elements +-------- + +The toplevel element is . Attribute lang is required and denotes +the name of the language. Its value is used as a part of generated class name, +and must only contain letters, digits and underscores. Optional attribute +case, when given value yes, makes the language case sensitive (default is case +insensitive). Allowed subelements are: + + * : Information about the authors of the file. + : Information about a single author of the file. (May be used + multiple times, one per author.) + - name="...": Author's name. Required. + - email="...": Author's email address. Optional. + + * : Default color group. + - innerGroup="...": color group name. Required. + + * : Region definition + - name="...": Region name. Required. + - innerGroup="...": Default color group of region contents. Required. + - delimGroup="...": color group of start and end of region. Optional, + defaults to value of innerGroup attribute. + - start="...", end="...": Regular expression matching start and end + of region. Required. Regular expression delimiters are optional, but + if you need to specify delimiter, use /. The only case when the + delimiters are needed, is specifying regular expression modifiers, + such as m or U. Examples: \/\* or /$/m. + - contained="yes": Marks region as contained. + - never-contained="yes": Marks region as not-contained. + - : Elements allowed inside this region. + - all="yes" Region can contain any other region or block + (except not-contained). May be used multiple times. + - Do not allow certain regions or blocks. + - region="..." Name of region not allowed within + current region. + - block="..." Name of block not allowed within + current region. + - region="..." Name of region allowed within current region. + - block="..." Name of block allowed within current region. + - Only allow this region within certain regions. May be + used multiple times. + - block="..." Name of parent region + + * : Block definition + - name="...": Block name. Required. + - innerGroup="...": color group of block contents. Optional. If not + specified, color group of parent region or default color group will be + used. One would only want to omit this attribute if there are + keyword groups (see below) inherited from this block, and no special + highlighting should apply when the block does not match the keyword. + - match="..." Regular expression matching the block. Required. + Regular expression delimiters are optional, but if you need to + specify delimiter, use /. The only case when the delimiters are + needed, is specifying regular expression modifiers, such as m or U. + Examples: #|\/\/ or /$/m. + - contained="yes": Marks block as contained. + - never-contained="yes": Marks block as not-contained. + - Only allow this block within certain regions. May be used + multiple times. + - block="..." Name of parent region + - multiline="yes": Marks block as multi-line. By default, whole + blocks are assumed to reside in a single line. This make the things + faster. If you need to declare a multi-line block, use this + attribute. + - : Assigns another color group to a part of the block that + matched a subpattern. + - index="n": Subpattern index. Required. + - innerGroup="...": color group name. Required. + + This is an example from CSS highlighter: the measure is matched as + a whole, but the measurement units are highlighted with different + color. + + + + + + + * : Keyword group definition. Keyword groups are useful when you + want to highlight some words that match a condition for a block with a + different color. Keywords are defined with literal match, not regular + expressions. For example, you have a block named identifier matching a + general identifier, and want to highlight reserved words (which match + this block as well) with different color. You inherit a keyword group + "reserved" from "identifier" block. + - name="...": Keyword group. Required. + - ifdef="...", ifndef="..." : Conditional declaration. See + "Conditions" below. + - inherits="...": Inherited block name. Required. + - innerGroup="...": color group of keyword group. Required. + - case="yes|no": Overrides case-sensitivity of the language. + Optional, defaults to global value. + - : Single keyword definition. + - match="..." The keyword. Note: this is not a regular + expression, but literal match (possibly case insensitive). + +Note that for BC reasons element partClass is alias for partGroup, and +attributes innerClass and delimClass are aliases of innerGroup and +delimGroup, respectively. + + +Conditions +---------- + +Conditional declarations allow enabling or disabling certain highlighting +rules at runtime. For example, Java highlighter has a very big list of +keywords matching Java standard classes. Finding a match in this list can take +much time. For that reason, corresponding keyword group is declared with +"ifdef" attribute : + + + + + + ... + ... + + + + + +This keyword group will be only enabled when "java.builtins" is passed as an +element of "defines" option: + + $options = array( + 'defines' => array( + 'java.builtins', + ), + 'numbers' => HL_NUMBERS_TABLE, + ); + $highlighter = Text_Highlighter::factory('java', $options); + +"ifndef" attribute has reverse meaning. + +Currently, "ifdef" and "ifndef" attributes are only supported for +tag. + + + +Class generation +================ + +Creating XML description of highlighting rules is the most complicated part of +the process. To generate the class, you need just few lines of code: + + generate(); + $generator->saveCode('PHP.php'); + ?> + + + +Command-line class generation tool +================================== + +Example from previous section looks pretty simple, but it does not handle any +errors which may occur during parsing of XML source. The package provides a +command-line script to make generation of classes even more simple, and takes +care of possible errors. It is called generate (on Unix/Linux) or generate.bat +(on Windows). This script is able to process multiple files in one run, and +also to process XML from standard input and write generated code to standard +output. + + Usage: + generate options + + Options: + -x filename, --xml=filename + source XML file. Multiple input files can be specified, in which + case each -x option must be followed by -p unless -d is specified + Defaults to stdin + -p filename, --php=filename + destination PHP file. Defaults to stdout. If specied multiple times, + each -p must follow -x + -d dirname, --dir=dirname + Default destination directory. File names will be taken from XML input + ("lang" attribute of tag) + -h, --help + This help + +Examples + + Read from php.xml, write to PHP.php + + generate -x php.xml -p PHP.php + + Read from php.xml, write to standard output + + generate -x php.xml + + Read from php.xml, write to PHP.php, read from xml.xml, write to XML.php + + generate -x php.xml -p PHP.php -x xml.xml -p XML.php + + Read from php.xml, write to /some/dir/PHP.php, read from xml.xml, write to + /some/dir/XML.php (assuming that xml.xml contains , and + php.xml contains ) + + generate -x php.xml -x xml.xml -d /some/dir/ + + + +Renderers +========= + +Introduction +------------ + +Text_Highlighter supports renderes. Using renderers, you can get output in +different formats. Two renderers are included in the package: + + - HTML renderer. Generates HTML output. A style sheet should be linked to + the document to display colored text + + - Console renderer. Can be used to output highlighted text to + color-capable terminals, either directly or trough less -r + + +Renderers API +------------- + +Renderers are subclasses of Text_Highlighter_Renderer. Renderer should +override at least two methods - acceptToken and getOutput. Overriding other +methods is optional, depending on the nature of renderer's output and details +of implementation. + + string reset() + resets renderer state. This method is called every time before a new + source file is highlighted. + + string preprocess(string $code) + preprocesses code. Can be used, for example, to normalize whitespace + before highlighting. Returns preprocessed string. + + void acceptToken(string $group, string $content) + the core method of the renderer. Highlighter passes chunks of text to + this method in $content, and color group in $group + + void finalize() + signals the renderer that no more tokens are available. + + mixed getOutput() + returns generated output. + + +Setting renderer options +-------------------------------- + +Renderers accept an optional argument to their constructor - options array. +Elements of this array are renderer-specific. + +HTML renderer +------------- + +HTML renderer produces HTML output with optional line numbering. The renderer +itself does not provide information about actual colors of highlighted text. +Instead, is used, where XXX is replaced with color group +name (hl-var, hl-string, etc.). It is up to you to create a CSS stylesheet. +If 'use_language' option with value evaluating to true was passed, class names +will be formatted as "LANG-hl-XXX", where LANG is language name as defined in +highlighter XML source ("lang" attribute of tag) in lower case. + +There are 3 special CSS classes: + + hl-main - this class applies to whole output or right table column, + depending on 'numbers' option + hl-gutter - applies to left column in table + hl-table - applies to whole table + +HTML renderer accepts following options (each being optional): + + * numbers - line numbering style. + 0 - no numbering (default) + HL_NUMBERS_LI - use
        for line numbering + HL_NUMBERS_TABLE - create a 2-column table, with line numbers in left + column and highlighted text in right column + + * tabsize - tabulation size. Defaults to 4 + + Example: + + require_once 'Text/Highlighter/Renderer/Html.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $renderer = new Text_Highlighter_Renderer_HTML($options); + +Console renderer +---------------- + +Console renderer produces output for displaying on a color-capable terminal, +either directly or through less -r, using ANSI escape sequences. By default, +this renderer only highlights most common color groups. Additional colors +can be specified using 'colors' option. This renderer also accepts 'numbers' +option - a boolean value, and 'tabsize' option. + + Example : + + require_once 'Text/Highlighter/Renderer/Console.php'; + $colors = array( + 'prepro' => "\033[35m", + 'types' => "\033[32m", + ); + $options = array( + 'numbers' => true, + 'tabsize' => 8, + 'colors' => $colors, + ); + $renderer = new Text_Highlighter_Renderer_Console($options); + + +ANSI color escape sequences have the following format: + + ESC[#;#;....;#m + +where ESC is character with ASCII code 27 (033 octal, 0x1B hexadecimal). # is +one of the following: + + 0 for normal display + 1 for bold on + 4 underline (mono only) + 5 blink on + 7 reverse video on + 8 nondisplayed (invisible) + 30 black foreground + 31 red foreground + 32 green foreground + 33 yellow foreground + 34 blue foreground + 35 magenta foreground + 36 cyan foreground + 37 white foreground + 40 black background + 41 red background + 42 green background + 43 yellow background + 44 blue background + 45 magenta background + 46 cyan background + 47 white background + + +How to use Text_Highlighter class +================================= + +Creating a highlighter object +----------------------------- + +To create a highlighter for a certain language, use Text_Highlighter::factory() +static method: + + require_once 'Text/Highlighter.php'; + $hl = Text_Highlighter::factory('php'); + + +Setting a renderer +------------------ + +Actual output is produced by a renderer. + + require_once 'Text/Highlighter.php'; + require_once 'Text/Highlighter/Renderer/Html.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $renderer = new Text_Highlighter_Renderer_HTML($options); + $hl = Text_Highlighter::factory('php'); + $hl->setRenderer($renderer); + +Note that for BC reasons, it is possible to use highlighter without setting a +renderer. If no renderer is set, HTML renderer will be used by default. In +this case, you should pass options as second parameter to factory method. The +following example works exactly as previous one: + + require_once 'Text/Highlighter.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $hl = Text_Highlighter::factory('php', $options); + + +Getting output +-------------- + +And finally, do the highlighting and get the output: + + require_once 'Text/Highlighter.php'; + require_once 'Text/Highlighter/Renderer/Html.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $renderer = new Text_Highlighter_Renderer_HTML($options); + $hl = Text_Highlighter::factory('php'); + $hl->setRenderer($renderer); + $html = $hl->highlight(file_get_contents('example.php')); + +# vim: set autoindent tabstop=4 shiftwidth=4 softtabstop=4 tw=78: */ + diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/TODO b/web/framework/vendors/TextHighlighter/Text/TODO similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/TODO rename to web/framework/vendors/TextHighlighter/Text/TODO diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/abap.xml b/web/framework/vendors/TextHighlighter/Text/abap.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/abap.xml rename to web/framework/vendors/TextHighlighter/Text/abap.xml diff --git a/web/framework/vendors/TextHighlighter/Text/avrc.xml b/web/framework/vendors/TextHighlighter/Text/avrc.xml new file mode 100644 index 0000000..dec571e --- /dev/null +++ b/web/framework/vendors/TextHighlighter/Text/avrc.xml @@ -0,0 +1,316 @@ + + + + + + + + + + + C/C++ highlighter specific to Atmel AVR microcontrollers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/cpp.xml b/web/framework/vendors/TextHighlighter/Text/cpp.xml similarity index 93% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/cpp.xml rename to web/framework/vendors/TextHighlighter/Text/cpp.xml index 81f0328..2cbaa93 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/cpp.xml +++ b/web/framework/vendors/TextHighlighter/Text/cpp.xml @@ -1,201 +1,201 @@ - - - - - - - - - - - -Thanks to Aaron Kalin for initial -implementation of this highlighter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +Thanks to Aaron Kalin for initial +implementation of this highlighter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/css.xml b/web/framework/vendors/TextHighlighter/Text/css.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/css.xml rename to web/framework/vendors/TextHighlighter/Text/css.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/diff.xml b/web/framework/vendors/TextHighlighter/Text/diff.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/diff.xml rename to web/framework/vendors/TextHighlighter/Text/diff.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/dtd.xml b/web/framework/vendors/TextHighlighter/Text/dtd.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/dtd.xml rename to web/framework/vendors/TextHighlighter/Text/dtd.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/generate b/web/framework/vendors/TextHighlighter/Text/generate similarity index 93% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/generate rename to web/framework/vendors/TextHighlighter/Text/generate index 41048d9..4e22e82 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/generate +++ b/web/framework/vendors/TextHighlighter/Text/generate @@ -1,171 +1,171 @@ -#!@php_bin@ - - * @copyright 2004 Andrey Demenev - * @license http://www.php.net/license/3_0.txt PHP License - * @version CVS: $Id: generate,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ - * @link http://pear.php.net/package/Text_Highlighter - */ - -require_once 'Text/Highlighter/Generator.php'; -require_once 'Console/Getopt.php'; - -$options = Console_Getopt::getopt($argv, 'x:p:d:h', array('xml=', 'php=','dir=', 'help')); - -if (PEAR::isError($options)) { - $message = str_replace('Console_Getopt: ','',$options->message); - usage($message); -} - -$source = array(); -$dest = array(); -$dir = ''; - -$expectp = false; -$expectx = false; -$unexpectedx = false; -$unexpectedp = false; -$si = $di = 0; - -foreach ($options[0] as $option) { - switch ($option[0]) { - case 'x': - case '--xml': - $source[$si] = $option[1]; - if ($si) { - $di++; - } - $si++; - if ($expectp) { - $unexpectedx = true; - } - $expectp = true; - $expectx = false; - break; - - case 'p': - case '--php': - if ($expectx) { - $unexpectedp = true; - } - $dest[$di] = $option[1]; - $expectp = false; - $expectx = true; - break; - - case 'd': - case '--dir': - $dir = $option[1]; - break; - - case 'h': - case '--help': - usage(); - break; - } -} - - -if ($unexpectedx && !$dir) { - usage('Unexpected -x or --xml', STDERR); -} - -if ($unexpectedp) { - usage('Unexpected -p or --php', STDERR); -} - -$nsource = count($source); -$ndest = count($dest); - -if (!$nsource && !$ndest) { - $source[]='php://stdin'; - if (!$dir) { - $dest[]='php://stdout'; - } else { - $dest[] = null; - } -} elseif ($expectp && !$dir && $nsource > 1) { - usage('-x or --xml without following -p or --php', STDERR); -} elseif ($nsource == 1 && !$ndest && !$dir) { - $dest[]='php://stdout'; -} - -if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) { - $dir .= DIRECTORY_SEPARATOR; -} - - -foreach ($source as $i => $xmlfile) -{ - $gen =& new Text_Highlighter_Generator; - $gen->setInputFile($xmlfile); - if ($gen->hasErrors()) { - break; - } - $gen->generate(); - if ($gen->hasErrors()) { - break; - } - if (isset($dest[$i])) { - $phpfile = $dest[$i]; - } else { - $phpfile = $dir . $gen->language . '.php'; - } - $gen->saveCode($phpfile); - if ($gen->hasErrors()) { - break; - } -} -if ($gen->hasErrors()) { - $errors = $gen->getErrors(); - foreach ($errors as $error) { - fwrite (STDERR, $error . "\n"); - } - exit(1); -} - -function usage($message='', $file=STDOUT) -{ - $code = 0; - if ($message) { - $message .= "\n\n"; - $code = 1; - } - $message .= << tag) - -h, --help - This help -MSG; - fwrite ($file, $message); - exit($code); -} -?> - +#!@php_bin@ + + * @copyright 2004 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +require_once 'Text/Highlighter/Generator.php'; +require_once 'Console/Getopt.php'; + +$options = Console_Getopt::getopt($argv, 'x:p:d:h', array('xml=', 'php=','dir=', 'help')); + +if (PEAR::isError($options)) { + $message = str_replace('Console_Getopt: ','',$options->message); + usage($message); +} + +$source = array(); +$dest = array(); +$dir = ''; + +$expectp = false; +$expectx = false; +$unexpectedx = false; +$unexpectedp = false; +$si = $di = 0; + +foreach ($options[0] as $option) { + switch ($option[0]) { + case 'x': + case '--xml': + $source[$si] = $option[1]; + if ($si) { + $di++; + } + $si++; + if ($expectp) { + $unexpectedx = true; + } + $expectp = true; + $expectx = false; + break; + + case 'p': + case '--php': + if ($expectx) { + $unexpectedp = true; + } + $dest[$di] = $option[1]; + $expectp = false; + $expectx = true; + break; + + case 'd': + case '--dir': + $dir = $option[1]; + break; + + case 'h': + case '--help': + usage(); + break; + } +} + + +if ($unexpectedx && !$dir) { + usage('Unexpected -x or --xml', STDERR); +} + +if ($unexpectedp) { + usage('Unexpected -p or --php', STDERR); +} + +$nsource = count($source); +$ndest = count($dest); + +if (!$nsource && !$ndest) { + $source[]='php://stdin'; + if (!$dir) { + $dest[]='php://stdout'; + } else { + $dest[] = null; + } +} elseif ($expectp && !$dir && $nsource > 1) { + usage('-x or --xml without following -p or --php', STDERR); +} elseif ($nsource == 1 && !$ndest && !$dir) { + $dest[]='php://stdout'; +} + +if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) { + $dir .= DIRECTORY_SEPARATOR; +} + + +foreach ($source as $i => $xmlfile) +{ + $gen = new Text_Highlighter_Generator; + $gen->setInputFile($xmlfile); + if ($gen->hasErrors()) { + break; + } + $gen->generate(); + if ($gen->hasErrors()) { + break; + } + if (isset($dest[$i])) { + $phpfile = $dest[$i]; + } else { + $phpfile = $dir . $gen->language . '.php'; + } + $gen->saveCode($phpfile); + if ($gen->hasErrors()) { + break; + } +} +if ($gen->hasErrors()) { + $errors = $gen->getErrors(); + foreach ($errors as $error) { + fwrite (STDERR, $error . "\n"); + } + exit(1); +} + +function usage($message='', $file=STDOUT) +{ + $code = 0; + if ($message) { + $message .= "\n\n"; + $code = 1; + } + $message .= << tag) + -h, --help + This help +MSG; + fwrite ($file, $message); + exit($code); +} +?> + diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/generate.bat b/web/framework/vendors/TextHighlighter/Text/generate.bat similarity index 93% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/generate.bat rename to web/framework/vendors/TextHighlighter/Text/generate.bat index 3170190..3960486 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/generate.bat +++ b/web/framework/vendors/TextHighlighter/Text/generate.bat @@ -1,188 +1,188 @@ -@echo off -rem vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: - -rem Console highlighter class generator - -rem PHP versions 4 and 5 - -rem LICENSE: This source file is subject to version 3.0 of the PHP license -rem that is available through the world-wide-web at the following URI: -rem http://www.php.net/license/3_0.txt. If you did not receive a copy of -rem the PHP License and are unable to obtain it through the web, please -rem send a note to license@php.net so we can mail you a copy immediately. - -rem @category Text -rem @package Text_Highlighter -rem @author Andrey Demenev -rem @copyright 2004 Andrey Demenev -rem @license http://www.php.net/license/3_0.txt PHP License -rem @version CVS: $Id: generate.bat,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -rem @link http://pear.php.net/package/Text_Highlighter - -set "MHL_PARAMS=" -:doshift -set "MHL_PARAMS=%MHL_PARAMS% %1" -shift -if -%1- == -- GOTO noshift -GOTO doshift -:noshift -@php_bin@ -q -d output_buffering=1 -d include_path="@php_dir@" @bin_dir@/Text/Highlighter/generate.bat %MHL_PARAMS% - -GOTO finish -message); - usage($message); -} - -$source = array(); -$dest = array(); -$dir = ''; - -$expectp = false; -$expectx = false; -$unexpectedx = false; -$unexpectedp = false; -$si = $di = 0; - -foreach ($options[0] as $option) { - switch ($option[0]) { - case 'x': - case '--xml': - $source[$si] = $option[1]; - if ($si) { - $di++; - } - $si++; - if ($expectp) { - $unexpectedx = true; - } - $expectp = true; - $expectx = false; - break; - - case 'p': - case '--php': - if ($expectx) { - $unexpectedp = true; - } - $dest[$di] = $option[1]; - $expectp = false; - $expectx = true; - break; - - case 'd': - case '--dir': - $dir = $option[1]; - break; - - case 'h': - case '--help': - usage(); - break; - } -} - - -if ($unexpectedx && !$dir) { - usage('Unexpected -x or --xml', STDERR); -} - -if ($unexpectedp) { - usage('Unexpected -p or --php', STDERR); -} - -$nsource = count($source); -$ndest = count($dest); - -if (!$nsource && !$ndest) { - $source[]='php://stdin'; - if (!$dir) { - $dest[]='php://stdout'; - } else { - $dest[] = null; - } -} elseif ($expectp && !$dir && $nsource > 1) { - usage('-x or --xml without following -p or --php', STDERR); -} elseif ($nsource == 1 && !$ndest && !$dir) { - $dest[]='php://stdout'; -} - -if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) { - $dir .= DIRECTORY_SEPARATOR; -} - - -foreach ($source as $i => $xmlfile) -{ - $gen =& new Text_Highlighter_Generator; - $gen->setInputFile($xmlfile); - if ($gen->hasErrors()) { - break; - } - $gen->generate(); - if ($gen->hasErrors()) { - break; - } - if (isset($dest[$i])) { - $phpfile = $dest[$i]; - } else { - $phpfile = $dir . $gen->language . '.php'; - } - $gen->saveCode($phpfile); - if ($gen->hasErrors()) { - break; - } -} -if ($gen->hasErrors()) { - $errors = $gen->getErrors(); - foreach ($errors as $error) { - fwrite (STDERR, $error . "\n"); - } - exit(1); -} - -exit(0); - -function usage($message='', $file=STDOUT) -{ - $code = 0; - if ($message) { - $message .= "\n\n"; - $code = 1; - } - $message .= << tag) - -h, --help - This help -MSG; - fwrite ($file, $message); - exit($code); -} -?> -:finish +@echo off +rem vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: + +rem Console highlighter class generator + +rem PHP versions 4 and 5 + +rem LICENSE: This source file is subject to version 3.0 of the PHP license +rem that is available through the world-wide-web at the following URI: +rem http://www.php.net/license/3_0.txt. If you did not receive a copy of +rem the PHP License and are unable to obtain it through the web, please +rem send a note to license@php.net so we can mail you a copy immediately. + +rem @category Text +rem @package Text_Highlighter +rem @author Andrey Demenev +rem @copyright 2004 Andrey Demenev +rem @license http://www.php.net/license/3_0.txt PHP License +rem @version CVS: $Id: generate.bat,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ +rem @link http://pear.php.net/package/Text_Highlighter + +set "MHL_PARAMS=" +:doshift +set "MHL_PARAMS=%MHL_PARAMS% %1" +shift +if -%1- == -- GOTO noshift +GOTO doshift +:noshift +@php_bin@ -q -d output_buffering=1 -d include_path="@php_dir@" @bin_dir@/Text/Highlighter/generate.bat %MHL_PARAMS% + +GOTO finish +message); + usage($message); +} + +$source = array(); +$dest = array(); +$dir = ''; + +$expectp = false; +$expectx = false; +$unexpectedx = false; +$unexpectedp = false; +$si = $di = 0; + +foreach ($options[0] as $option) { + switch ($option[0]) { + case 'x': + case '--xml': + $source[$si] = $option[1]; + if ($si) { + $di++; + } + $si++; + if ($expectp) { + $unexpectedx = true; + } + $expectp = true; + $expectx = false; + break; + + case 'p': + case '--php': + if ($expectx) { + $unexpectedp = true; + } + $dest[$di] = $option[1]; + $expectp = false; + $expectx = true; + break; + + case 'd': + case '--dir': + $dir = $option[1]; + break; + + case 'h': + case '--help': + usage(); + break; + } +} + + +if ($unexpectedx && !$dir) { + usage('Unexpected -x or --xml', STDERR); +} + +if ($unexpectedp) { + usage('Unexpected -p or --php', STDERR); +} + +$nsource = count($source); +$ndest = count($dest); + +if (!$nsource && !$ndest) { + $source[]='php://stdin'; + if (!$dir) { + $dest[]='php://stdout'; + } else { + $dest[] = null; + } +} elseif ($expectp && !$dir && $nsource > 1) { + usage('-x or --xml without following -p or --php', STDERR); +} elseif ($nsource == 1 && !$ndest && !$dir) { + $dest[]='php://stdout'; +} + +if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) { + $dir .= DIRECTORY_SEPARATOR; +} + + +foreach ($source as $i => $xmlfile) +{ + $gen = new Text_Highlighter_Generator; + $gen->setInputFile($xmlfile); + if ($gen->hasErrors()) { + break; + } + $gen->generate(); + if ($gen->hasErrors()) { + break; + } + if (isset($dest[$i])) { + $phpfile = $dest[$i]; + } else { + $phpfile = $dir . $gen->language . '.php'; + } + $gen->saveCode($phpfile); + if ($gen->hasErrors()) { + break; + } +} +if ($gen->hasErrors()) { + $errors = $gen->getErrors(); + foreach ($errors as $error) { + fwrite (STDERR, $error . "\n"); + } + exit(1); +} + +exit(0); + +function usage($message='', $file=STDOUT) +{ + $code = 0; + if ($message) { + $message .= "\n\n"; + $code = 1; + } + $message .= << tag) + -h, --help + This help +MSG; + fwrite ($file, $message); + exit($code); +} +?> +:finish diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/html.xml b/web/framework/vendors/TextHighlighter/Text/html.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/html.xml rename to web/framework/vendors/TextHighlighter/Text/html.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/java.xml b/web/framework/vendors/TextHighlighter/Text/java.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/java.xml rename to web/framework/vendors/TextHighlighter/Text/java.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/javascript.xml b/web/framework/vendors/TextHighlighter/Text/javascript.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/javascript.xml rename to web/framework/vendors/TextHighlighter/Text/javascript.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/mysql.xml b/web/framework/vendors/TextHighlighter/Text/mysql.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/mysql.xml rename to web/framework/vendors/TextHighlighter/Text/mysql.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/package.xml b/web/framework/vendors/TextHighlighter/Text/package.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/package.xml rename to web/framework/vendors/TextHighlighter/Text/package.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/perl.xml b/web/framework/vendors/TextHighlighter/Text/perl.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/perl.xml rename to web/framework/vendors/TextHighlighter/Text/perl.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/php.xml b/web/framework/vendors/TextHighlighter/Text/php.xml similarity index 95% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/php.xml rename to web/framework/vendors/TextHighlighter/Text/php.xml index de00096..1b08ea2 100644 --- a/web/framework-1.1.17/vendors/TextHighlighter/Text/php.xml +++ b/web/framework/vendors/TextHighlighter/Text/php.xml @@ -1,194 +1,194 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/python.xml b/web/framework/vendors/TextHighlighter/Text/python.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/python.xml rename to web/framework/vendors/TextHighlighter/Text/python.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/ruby.xml b/web/framework/vendors/TextHighlighter/Text/ruby.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/ruby.xml rename to web/framework/vendors/TextHighlighter/Text/ruby.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/sample.css b/web/framework/vendors/TextHighlighter/Text/sample.css similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/sample.css rename to web/framework/vendors/TextHighlighter/Text/sample.css diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/sh.xml b/web/framework/vendors/TextHighlighter/Text/sh.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/sh.xml rename to web/framework/vendors/TextHighlighter/Text/sh.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/sql.xml b/web/framework/vendors/TextHighlighter/Text/sql.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/sql.xml rename to web/framework/vendors/TextHighlighter/Text/sql.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/vbscript.xml b/web/framework/vendors/TextHighlighter/Text/vbscript.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/vbscript.xml rename to web/framework/vendors/TextHighlighter/Text/vbscript.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/Text/xml.xml b/web/framework/vendors/TextHighlighter/Text/xml.xml similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/Text/xml.xml rename to web/framework/vendors/TextHighlighter/Text/xml.xml diff --git a/web/framework-1.1.17/vendors/TextHighlighter/highlight.css b/web/framework/vendors/TextHighlighter/highlight.css similarity index 100% rename from web/framework-1.1.17/vendors/TextHighlighter/highlight.css rename to web/framework/vendors/TextHighlighter/highlight.css diff --git a/web/framework-1.1.17/vendors/adodb/LICENSE.txt b/web/framework/vendors/adodb/LICENSE.txt similarity index 100% rename from web/framework-1.1.17/vendors/adodb/LICENSE.txt rename to web/framework/vendors/adodb/LICENSE.txt diff --git a/web/framework-1.1.17/vendors/bbq/LICENSE.txt b/web/framework/vendors/bbq/LICENSE.txt similarity index 100% rename from web/framework-1.1.17/vendors/bbq/LICENSE.txt rename to web/framework/vendors/bbq/LICENSE.txt diff --git a/web/framework-1.1.17/vendors/cldr/LICENSE.txt b/web/framework/vendors/cldr/LICENSE.txt similarity index 100% rename from web/framework-1.1.17/vendors/cldr/LICENSE.txt rename to web/framework/vendors/cldr/LICENSE.txt diff --git a/web/framework-1.1.17/vendors/console-normalizer/README.md b/web/framework/vendors/console-normalizer/README.md similarity index 100% rename from web/framework-1.1.17/vendors/console-normalizer/README.md rename to web/framework/vendors/console-normalizer/README.md diff --git a/web/framework-1.1.17/vendors/console-normalizer/normalizeconsole.min.js b/web/framework/vendors/console-normalizer/normalizeconsole.min.js similarity index 100% rename from web/framework-1.1.17/vendors/console-normalizer/normalizeconsole.min.js rename to web/framework/vendors/console-normalizer/normalizeconsole.min.js diff --git a/web/framework-1.1.17/vendors/gettext/LICENSE.txt b/web/framework/vendors/gettext/LICENSE.txt similarity index 100% rename from web/framework-1.1.17/vendors/gettext/LICENSE.txt rename to web/framework/vendors/gettext/LICENSE.txt diff --git a/web/framework-1.1.17/vendors/history/license.txt b/web/framework/vendors/history/license.txt similarity index 100% rename from web/framework-1.1.17/vendors/history/license.txt rename to web/framework/vendors/history/license.txt diff --git a/web/framework-1.1.17/vendors/htmlpurifier/HTMLPurifier.standalone.php b/web/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php similarity index 96% rename from web/framework-1.1.17/vendors/htmlpurifier/HTMLPurifier.standalone.php rename to web/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php index 233fed9..7adc09c 100644 --- a/web/framework-1.1.17/vendors/htmlpurifier/HTMLPurifier.standalone.php +++ b/web/framework/vendors/htmlpurifier/HTMLPurifier.standalone.php @@ -7,7 +7,7 @@ * primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS * FILE, changes will be overwritten the next time the script is run. * - * @version 4.6.0 + * @version 4.9.2 * * @warning * You must *not* include any other HTML Purifier files before this file, @@ -39,7 +39,7 @@ */ /* - HTML Purifier 4.6.0 - Standards Compliant HTML Filtering + HTML Purifier 4.9.2 - Standards Compliant HTML Filtering Copyright (C) 2006-2008 Edward Z. Yang This library is free software; you can redistribute it and/or @@ -78,12 +78,12 @@ class HTMLPurifier * Version of HTML Purifier. * @type string */ - public $version = '4.6.0'; + public $version = '4.9.2'; /** * Constant with version of HTML Purifier. */ - const VERSION = '4.6.0'; + const VERSION = '4.9.2'; /** * Global configuration object. @@ -124,7 +124,7 @@ class HTMLPurifier /** * Initializes the purifier. * - * @param HTMLPurifier_Config $config Optional HTMLPurifier_Config object + * @param HTMLPurifier_Config|mixed $config Optional HTMLPurifier_Config object * for all instances of the purifier, if omitted, a default * configuration is supplied (which can be overridden on a * per-use basis). @@ -332,8 +332,8 @@ class HTMLPurifier_Arborize if ($token instanceof HTMLPurifier_Token_End) { $token->start = null; // [MUT] $r = array_pop($stack); - assert($r->name === $token->name); - assert(empty($token->attr)); + //assert($r->name === $token->name); + //assert(empty($token->attr)); $r->endCol = $token->col; $r->endLine = $token->line; $r->endArmor = $token->armor; @@ -345,7 +345,7 @@ class HTMLPurifier_Arborize $stack[] = $node; } } - assert(count($stack) == 1); + //assert(count($stack) == 1); return $stack[0]; } @@ -406,6 +406,11 @@ class HTMLPurifier_AttrCollections * @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members */ public function __construct($attr_types, $modules) + { + $this->doConstruct($attr_types, $modules); + } + + public function doConstruct($attr_types, $modules) { // load extensions from the modules foreach ($modules as $module) { @@ -615,7 +620,13 @@ abstract class HTMLPurifier_AttrDef */ protected function mungeRgb($string) { - return preg_replace('/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)/', 'rgb(\1,\2,\3)', $string); + $p = '\s*(\d+(\.\d+)?([%]?))\s*'; + + if (preg_match('/(rgba|hsla)\(/', $string)) { + return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string); + } + + return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string); } /** @@ -1412,6 +1423,10 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition ); $max = $config->get('CSS.MaxImgLength'); + $this->info['min-width'] = + $this->info['max-width'] = + $this->info['min-height'] = + $this->info['max-height'] = $this->info['width'] = $this->info['height'] = $max === null ? @@ -1537,8 +1552,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color(); $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - // technically not proprietary, but CSS3, and no one supports it - $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); + // vendor specific prefixes of opacity $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); @@ -1558,6 +1572,19 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition ); $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid')); + $border_radius = new HTMLPurifier_AttrDef_CSS_Composite( + array( + new HTMLPurifier_AttrDef_CSS_Percentage(true), // disallow negative + new HTMLPurifier_AttrDef_CSS_Length('0') // disallow negative + )); + + $this->info['border-top-left-radius'] = + $this->info['border-top-right-radius'] = + $this->info['border-bottom-right-radius'] = + $this->info['border-bottom-left-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 2); + // TODO: support SLASH syntax + $this->info['border-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 4); + } /** @@ -1591,6 +1618,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition array('visible', 'hidden', 'collapse') ); $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll')); + $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); } /** @@ -1736,7 +1764,7 @@ class HTMLPurifier_Config * HTML Purifier's version * @type string */ - public $version = '4.6.0'; + public $version = '4.9.2'; /** * Whether or not to automatically finalize @@ -2361,16 +2389,25 @@ class HTMLPurifier_Config return $this->getDefinition($name, true, true); } + /** + * @return HTMLPurifier_HTMLDefinition + */ public function maybeGetRawHTMLDefinition() { return $this->getDefinition('HTML', true, true); } - + + /** + * @return HTMLPurifier_CSSDefinition + */ public function maybeGetRawCSSDefinition() { return $this->getDefinition('CSS', true, true); } - + + /** + * @return HTMLPurifier_URIDefinition + */ public function maybeGetRawURIDefinition() { return $this->getDefinition('URI', true, true); @@ -3189,7 +3226,7 @@ abstract class HTMLPurifier_DefinitionCache /** * Clears all expired (older version or revision) objects from cache - * @note Be carefuly implementing this method as flush. Flush must + * @note Be careful implementing this method as flush. Flush must * not interfere with other Definition types, and cleanup() * should not be repeatedly called by userland code. * @param HTMLPurifier_Config $config @@ -3843,6 +3880,14 @@ class HTMLPurifier_Encoder * It will parse according to UTF-8 and return a valid UTF8 string, with * non-SGML codepoints excluded. * + * Specifically, it will permit: + * \x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF} + * Source: https://www.w3.org/TR/REC-xml/#NT-Char + * Arguably this function should be modernized to the HTML5 set + * of allowed characters: + * https://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream + * which simultaneously expand and restrict the set of allowed characters. + * * @param string $str The string to clean * @param bool $force_php * @return string @@ -3864,15 +3909,12 @@ class HTMLPurifier_Encoder * function that needs to be able to understand UTF-8 characters. * As of right now, only smart lossless character encoding converters * would need that, and I'm probably not going to implement them. - * Once again, PHP 6 should solve all our problems. */ public static function cleanUTF8($str, $force_php = false) { // UTF-8 validity is checked since PHP 4.3.5 // This is an optimization: if the string is already valid UTF-8, no // need to do PHP stuff. 99% of the time, this will be the case. - // The regexp matches the XML char production, as well as well as excluding - // non-SGML codepoints U+007F to U+009F if (preg_match( '/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du', $str @@ -3997,6 +4039,7 @@ class HTMLPurifier_Encoder // 7F-9F is not strictly prohibited by XML, // but it is non-SGML, and thus we don't allow it (0xA0 <= $mUcs4 && 0xD7FF >= $mUcs4) || + (0xE000 <= $mUcs4 && 0xFFFD >= $mUcs4) || (0x10000 <= $mUcs4 && 0x10FFFF >= $mUcs4) ) ) { @@ -4419,6 +4462,138 @@ class HTMLPurifier_EntityParser */ protected $_entity_lookup; + /** + * Callback regex string for entities in text. + * @type string + */ + protected $_textEntitiesRegex; + + /** + * Callback regex string for entities in attributes. + * @type string + */ + protected $_attrEntitiesRegex; + + /** + * Tests if the beginning of a string is a semi-optional regex + */ + protected $_semiOptionalPrefixRegex; + + public function __construct() { + // From + // http://stackoverflow.com/questions/15532252/why-is-reg-being-rendered-as-without-the-bounding-semicolon + $semi_optional = "quot|QUOT|lt|LT|gt|GT|amp|AMP|AElig|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|Iacute|Icirc|Igrave|Iuml|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml"; + + // NB: three empty captures to put the fourth match in the right + // place + $this->_semiOptionalPrefixRegex = "/&()()()($semi_optional)/"; + + $this->_textEntitiesRegex = + '/&(?:'. + // hex + '[#]x([a-fA-F0-9]+);?|'. + // dec + '[#]0*(\d+);?|'. + // string (mandatory semicolon) + // NB: order matters: match semicolon preferentially + '([A-Za-z_:][A-Za-z0-9.\-_:]*);|'. + // string (optional semicolon) + "($semi_optional)". + ')/'; + + $this->_attrEntitiesRegex = + '/&(?:'. + // hex + '[#]x([a-fA-F0-9]+);?|'. + // dec + '[#]0*(\d+);?|'. + // string (mandatory semicolon) + // NB: order matters: match semicolon preferentially + '([A-Za-z_:][A-Za-z0-9.\-_:]*);|'. + // string (optional semicolon) + // don't match if trailing is equals or alphanumeric (URL + // like) + "($semi_optional)(?![=;A-Za-z0-9])". + ')/'; + + } + + /** + * Substitute entities with the parsed equivalents. Use this on + * textual data in an HTML document (as opposed to attributes.) + * + * @param string $string String to have entities parsed. + * @return string Parsed string. + */ + public function substituteTextEntities($string) + { + return preg_replace_callback( + $this->_textEntitiesRegex, + array($this, 'entityCallback'), + $string + ); + } + + /** + * Substitute entities with the parsed equivalents. Use this on + * attribute contents in documents. + * + * @param string $string String to have entities parsed. + * @return string Parsed string. + */ + public function substituteAttrEntities($string) + { + return preg_replace_callback( + $this->_attrEntitiesRegex, + array($this, 'entityCallback'), + $string + ); + } + + /** + * Callback function for substituteNonSpecialEntities() that does the work. + * + * @param array $matches PCRE matches array, with 0 the entire match, and + * either index 1, 2 or 3 set with a hex value, dec value, + * or string (respectively). + * @return string Replacement string. + */ + + protected function entityCallback($matches) + { + $entity = $matches[0]; + $hex_part = @$matches[1]; + $dec_part = @$matches[2]; + $named_part = empty($matches[3]) ? @$matches[4] : $matches[3]; + if ($hex_part !== NULL && $hex_part !== "") { + return HTMLPurifier_Encoder::unichr(hexdec($hex_part)); + } elseif ($dec_part !== NULL && $dec_part !== "") { + return HTMLPurifier_Encoder::unichr((int) $dec_part); + } else { + if (!$this->_entity_lookup) { + $this->_entity_lookup = HTMLPurifier_EntityLookup::instance(); + } + if (isset($this->_entity_lookup->table[$named_part])) { + return $this->_entity_lookup->table[$named_part]; + } else { + // exact match didn't match anything, so test if + // any of the semicolon optional match the prefix. + // Test that this is an EXACT match is important to + // prevent infinite loop + if (!empty($matches[3])) { + return preg_replace_callback( + $this->_semiOptionalPrefixRegex, + array($this, 'entityCallback'), + $entity + ); + } + return $entity; + } + } + } + + // LEGACY CODE BELOW + /** * Callback regex string for parsing entities. * @type string @@ -4547,7 +4722,7 @@ class HTMLPurifier_EntityParser $entity; } else { return isset($this->_special_ent2dec[$matches[3]]) ? - $this->_special_ent2dec[$matches[3]] : + $this->_special_dec2str[$this->_special_ent2dec[$matches[3]]] : $entity; } } @@ -6284,6 +6459,14 @@ class HTMLPurifier_HTMLModuleManager if ($config->get('HTML.TargetBlank')) { $modules[] = 'TargetBlank'; } + // NB: HTML.TargetNoreferrer and HTML.TargetNoopener must be AFTER HTML.TargetBlank + // so that its post-attr-transform gets run afterwards. + if ($config->get('HTML.TargetNoreferrer')) { + $modules[] = 'TargetNoreferrer'; + } + if ($config->get('HTML.TargetNoopener')) { + $modules[] = 'TargetNoopener'; + } // merge in custom modules $modules = array_merge($modules, $this->userModules); @@ -7558,21 +7741,24 @@ class HTMLPurifier_Lexer ''' => "'" ); + public function parseText($string, $config) { + return $this->parseData($string, false, $config); + } + + public function parseAttr($string, $config) { + return $this->parseData($string, true, $config); + } + /** * Parses special entities into the proper characters. * * This string will translate escaped versions of the special characters * into the correct ones. * - * @warning - * You should be able to treat the output of this function as - * completely parsed, but that's only because all other entities should - * have been handled previously in substituteNonSpecialEntities() - * * @param string $string String character data to be parsed. * @return string Parsed character data. */ - public function parseData($string) + public function parseData($string, $is_attr, $config) { // following functions require at least one character if ($string === '') { @@ -7598,7 +7784,15 @@ class HTMLPurifier_Lexer } // hmm... now we have some uncommon entities. Use the callback. - $string = $this->_entity_parser->substituteSpecialEntities($string); + if ($config->get('Core.LegacyEntityDecoder')) { + $string = $this->_entity_parser->substituteSpecialEntities($string); + } else { + if ($is_attr) { + $string = $this->_entity_parser->substituteAttrEntities($string); + } else { + $string = $this->_entity_parser->substituteTextEntities($string); + } + } return $string; } @@ -7712,7 +7906,9 @@ class HTMLPurifier_Lexer } // expand entities that aren't the big five - $html = $this->_entity_parser->substituteNonSpecialEntities($html); + if ($config->get('Core.LegacyEntityDecoder')) { + $html = $this->_entity_parser->substituteNonSpecialEntities($html); + } // clean into wellformed UTF-8 string for an SGML context: this has // to be done after entity expansion because the entities sometimes @@ -7724,6 +7920,13 @@ class HTMLPurifier_Lexer $html = preg_replace('#<\?.+?\?>#s', '', $html); } + $hidden_elements = $config->get('Core.HiddenElements'); + if ($config->get('Core.AggressivelyRemoveScript') && + !($config->get('HTML.Trusted') || !$config->get('Core.RemoveScriptContents') + || empty($hidden_elements["script"]))) { + $html = preg_replace('#]*>.*?#i', '', $html); + } + return $html; } @@ -7734,12 +7937,17 @@ class HTMLPurifier_Lexer public function extractBody($html) { $matches = array(); - $result = preg_match('!]*>(.*)!is', $html, $matches); + $result = preg_match('|(.*?)]*>(.*)|is', $html, $matches); if ($result) { - return $matches[1]; - } else { - return $html; + // Make sure it's not in a comment + $comment_start = strrpos($matches[1], ''); + if ($comment_start === false || + ($comment_end !== false && $comment_end > $comment_start)) { + return $matches[2]; + } } + return $html; } } @@ -8408,7 +8616,7 @@ abstract class HTMLPurifier_Token public $armor = array(); /** - * Used during MakeWellFormed. + * Used during MakeWellFormed. See Note [Injector skips] * @type */ public $skip; @@ -8687,11 +8895,13 @@ class HTMLPurifier_URI $def = $config->getDefinition('URI'); $scheme_obj = $def->getDefaultScheme($config, $context); if (!$scheme_obj) { - // something funky happened to the default scheme object - trigger_error( - 'Default scheme object "' . $def->defaultScheme . '" was not readable', - E_USER_WARNING - ); + if ($def->defaultScheme !== null) { + // something funky happened to the default scheme object + trigger_error( + 'Default scheme object "' . $def->defaultScheme . '" was not readable', + E_USER_WARNING + ); + } // suppress error if it's null return false; } } @@ -10064,15 +10274,42 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef $css = $this->parseCDATA($css); $definition = $config->getCSSDefinition(); + $allow_duplicates = $config->get("CSS.AllowDuplicates"); - // we're going to break the spec and explode by semicolons. - // This is because semicolon rarely appears in escaped form - // Doing this is generally flaky but fast - // IT MIGHT APPEAR IN URIs, see HTMLPurifier_AttrDef_CSSURI - // for details - $declarations = explode(';', $css); + // According to the CSS2.1 spec, the places where a + // non-delimiting semicolon can appear are in strings + // escape sequences. So here is some dumb hack to + // handle quotes. + $len = strlen($css); + $accum = ""; + $declarations = array(); + $quoted = false; + for ($i = 0; $i < $len; $i++) { + $c = strcspn($css, ";'\"", $i); + $accum .= substr($css, $i, $c); + $i += $c; + if ($i == $len) break; + $d = $css[$i]; + if ($quoted) { + $accum .= $d; + if ($d == $quoted) { + $quoted = false; + } + } else { + if ($d == ";") { + $declarations[] = $accum; + $accum = ""; + } else { + $accum .= $d; + $quoted = $d; + } + } + } + if ($accum != "") $declarations[] = $accum; + $propvalues = array(); + $new_declarations = ''; /** * Name of the current CSS property being validated. @@ -10122,7 +10359,11 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef if ($result === false) { continue; } - $propvalues[$property] = $result; + if ($allow_duplicates) { + $new_declarations .= "$property:$result;"; + } else { + $propvalues[$property] = $result; + } } $context->destroy('CurrentCSSProperty'); @@ -10131,7 +10372,6 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef // slightly inefficient, but it's the only way of getting rid of // duplicates. Perhaps config to optimize it, but not now. - $new_declarations = ''; foreach ($propvalues as $prop => $value) { $new_declarations .= "$prop:$value;"; } @@ -11085,6 +11325,16 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef { + /** + * @type HTMLPurifier_AttrDef_CSS_AlphaValue + */ + protected $alpha; + + public function __construct() + { + $this->alpha = new HTMLPurifier_AttrDef_CSS_AlphaValue(); + } + /** * @param string $color * @param HTMLPurifier_Config $config @@ -11108,59 +11358,104 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef return $colors[$lower]; } - if (strpos($color, 'rgb(') !== false) { - // rgb literal handling + if (preg_match('#(rgb|rgba|hsl|hsla)\(#', $color, $matches) === 1) { $length = strlen($color); if (strpos($color, ')') !== $length - 1) { return false; } - $triad = substr($color, 4, $length - 4 - 1); - $parts = explode(',', $triad); - if (count($parts) !== 3) { + + // get used function : rgb, rgba, hsl or hsla + $function = $matches[1]; + + $parameters_size = 3; + $alpha_channel = false; + if (substr($function, -1) === 'a') { + $parameters_size = 4; + $alpha_channel = true; + } + + /* + * Allowed types for values : + * parameter_position => [type => max_value] + */ + $allowed_types = array( + 1 => array('percentage' => 100, 'integer' => 255), + 2 => array('percentage' => 100, 'integer' => 255), + 3 => array('percentage' => 100, 'integer' => 255), + ); + $allow_different_types = false; + + if (strpos($function, 'hsl') !== false) { + $allowed_types = array( + 1 => array('integer' => 360), + 2 => array('percentage' => 100), + 3 => array('percentage' => 100), + ); + $allow_different_types = true; + } + + $values = trim(str_replace($function, '', $color), ' ()'); + + $parts = explode(',', $values); + if (count($parts) !== $parameters_size) { return false; } - $type = false; // to ensure that they're all the same type + + $type = false; $new_parts = array(); + $i = 0; + foreach ($parts as $part) { + $i++; $part = trim($part); + if ($part === '') { return false; } - $length = strlen($part); - if ($part[$length - 1] === '%') { - // handle percents - if (!$type) { - $type = 'percentage'; - } elseif ($type !== 'percentage') { + + // different check for alpha channel + if ($alpha_channel === true && $i === count($parts)) { + $result = $this->alpha->validate($part, $config, $context); + + if ($result === false) { return false; } - $num = (float)substr($part, 0, $length - 1); - if ($num < 0) { - $num = 0; - } - if ($num > 100) { - $num = 100; - } - $new_parts[] = "$num%"; + + $new_parts[] = (string)$result; + continue; + } + + if (substr($part, -1) === '%') { + $current_type = 'percentage'; } else { - // handle integers - if (!$type) { - $type = 'integer'; - } elseif ($type !== 'integer') { - return false; - } - $num = (int)$part; - if ($num < 0) { - $num = 0; - } - if ($num > 255) { - $num = 255; - } - $new_parts[] = (string)$num; + $current_type = 'integer'; + } + + if (!array_key_exists($current_type, $allowed_types[$i])) { + return false; + } + + if (!$type) { + $type = $current_type; + } + + if ($allow_different_types === false && $type != $current_type) { + return false; + } + + $max_value = $allowed_types[$i][$current_type]; + + if ($current_type == 'integer') { + // Return value between range 0 -> $max_value + $new_parts[] = (int)max(min($part, $max_value), 0); + } elseif ($current_type == 'percentage') { + $new_parts[] = (float)max(min(rtrim($part, '%'), $max_value), 0) . '%'; } } - $new_triad = implode(',', $new_parts); - $color = "rgb($new_triad)"; + + $new_values = implode(',', $new_parts); + + $color = $function . '(' . $new_values . ')'; } else { // hexadecimal handling if ($color[0] === '#') { @@ -11179,6 +11474,7 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef } return $color; } + } @@ -12079,7 +12375,7 @@ class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef */ public function validate($string, $config, $context) { - $string = $this->parseCDATA($string); + $string = $this->mungeRgb($this->parseCDATA($string)); if ($string === '') { return false; } @@ -12242,6 +12538,9 @@ class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI return false; } $uri_string = substr($uri_string, 4); + if (strlen($uri_string) == 0) { + return false; + } $new_length = strlen($uri_string) - 1; if ($uri_string[$new_length] != ')') { return false; @@ -12316,9 +12615,6 @@ class HTMLPurifier_AttrDef_HTML_Bool extends HTMLPurifier_AttrDef */ public function validate($string, $config, $context) { - if (empty($string)) { - return false; - } return $this->name; } @@ -12619,18 +12915,26 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef // we purposely avoid using regex, hopefully this is faster - if (ctype_alpha($id)) { - $result = true; - } else { - if (!ctype_alpha(@$id[0])) { + if ($config->get('Attr.ID.HTML5') === true) { + if (preg_match('/[\t\n\x0b\x0c ]/', $id)) { return false; } - // primitive style of regexps, I suppose - $trim = trim( - $id, - 'A..Za..z0..9:-._' - ); - $result = ($trim === ''); + } else { + if (ctype_alpha($id)) { + // OK + } else { + if (!ctype_alpha(@$id[0])) { + return false; + } + // primitive style of regexps, I suppose + $trim = trim( + $id, + 'A..Za..z0..9:-._' + ); + if ($trim !== '') { + return false; + } + } } $regexp = $config->get('Attr.IDBlacklistRegexp'); @@ -12638,14 +12942,14 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef return false; } - if (!$this->selector && $result) { + if (!$this->selector) { $id_accumulator->add($id); } // if no change was made to the ID, return the result // else, return the new id if stripping whitespace made it // valid, or return false. - return $result ? $id : false; + return $id; } } @@ -13018,24 +13322,33 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef // fairly well supported. $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : ''; + // Based off of RFC 1738, but amended so that + // as per RFC 3696, the top label need only not be all numeric. // The productions describing this are: $a = '[a-z]'; // alpha $an = '[a-z0-9]'; // alphanum $and = "[a-z0-9-$underscore]"; // alphanum | "-" // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum - $domainlabel = "$an($and*$an)?"; - // toplabel = alpha | alpha *( alphanum | "-" ) alphanum - $toplabel = "$a($and*$an)?"; + $domainlabel = "$an(?:$and*$an)?"; + // AMENDED as per RFC 3696 + // toplabel = alphanum | alphanum *( alphanum | "-" ) alphanum + // side condition: not all numeric + $toplabel = "$an(?:$and*$an)?"; // hostname = *( domainlabel "." ) toplabel [ "." ] - if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { - return $string; + if (preg_match("/^(?:$domainlabel\.)*($toplabel)\.?$/i", $string, $matches)) { + if (!ctype_digit($matches[1])) { + return $string; + } } + // PHP 5.3 and later support this functionality natively + if (function_exists('idn_to_ascii')) { + $string = idn_to_ascii($string); + // If we have Net_IDNA2 support, we can support IRIs by // punycoding them. (This is the most portable thing to do, // since otherwise we have to assume browsers support - - if ($config->get('Core.EnableIDNA')) { + } elseif ($config->get('Core.EnableIDNA')) { $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true)); // we need to encode each period separately $parts = explode('.', $string); @@ -13056,13 +13369,14 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef } } $string = implode('.', $new_parts); - if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { - return $string; - } } catch (Exception $e) { // XXX error reporting } } + // Try again + if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { + return $string; + } return false; } } @@ -13499,8 +13813,7 @@ class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform if ($src) { $alt = $config->get('Attr.DefaultImageAlt'); if ($alt === null) { - // truncate if the alt is too long - $attr['alt'] = substr(basename($attr['src']), 0, 40); + $attr['alt'] = basename($attr['src']); } else { $attr['alt'] = $alt; } @@ -14047,6 +14360,82 @@ class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform +// must be called POST validation + +/** + * Adds rel="noopener" to any links which target a different window + * than the current one. This is used to prevent malicious websites + * from silently replacing the original window, which could be used + * to do phishing. + * This transform is controlled by %HTML.TargetNoopener. + */ +class HTMLPurifier_AttrTransform_TargetNoopener extends HTMLPurifier_AttrTransform +{ + /** + * @param array $attr + * @param HTMLPurifier_Config $config + * @param HTMLPurifier_Context $context + * @return array + */ + public function transform($attr, $config, $context) + { + if (isset($attr['rel'])) { + $rels = explode(' ', $attr['rel']); + } else { + $rels = array(); + } + if (isset($attr['target']) && !in_array('noopener', $rels)) { + $rels[] = 'noopener'; + } + if (!empty($rels) || isset($attr['rel'])) { + $attr['rel'] = implode(' ', $rels); + } + + return $attr; + } +} + + + + +// must be called POST validation + +/** + * Adds rel="noreferrer" to any links which target a different window + * than the current one. This is used to prevent malicious websites + * from silently replacing the original window, which could be used + * to do phishing. + * This transform is controlled by %HTML.TargetNoreferrer. + */ +class HTMLPurifier_AttrTransform_TargetNoreferrer extends HTMLPurifier_AttrTransform +{ + /** + * @param array $attr + * @param HTMLPurifier_Config $config + * @param HTMLPurifier_Context $context + * @return array + */ + public function transform($attr, $config, $context) + { + if (isset($attr['rel'])) { + $rels = explode(' ', $attr['rel']); + } else { + $rels = array(); + } + if (isset($attr['target']) && !in_array('noreferrer', $rels)) { + $rels[] = 'noreferrer'; + } + if (!empty($rels) || isset($attr['rel'])) { + $attr['rel'] = implode(' ', $rels); + } + + return $attr; + } +} + + + + /** * Sets height/width defaults for