示例#1
0
 public function get_folders($directory)
 {
     $rows = array();
     $iter = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), true);
     foreach ($iter as $file) {
         if ($iter->hasChildren() && !strstr($iter->getPath() . "/" . $file, "/.")) {
             $row['name'] = str_repeat('  ', $iter->getDepth()) . ucfirst(basename($file));
             $row['path'] = $iter->getPath() . "/" . basename($file);
             $rows[] = $row;
             unset($row);
         }
     }
     return $rows;
 }
示例#2
0
 protected function _restructure(array $params)
 {
     $output = [];
     foreach ($params as $name => $array) {
         foreach ($array as $field => $value) {
             $pointer =& $output[$name];
             if (!is_array($value)) {
                 $pointer[$field] = $value;
                 continue;
             }
             $stack = [&$pointer];
             $iterator = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($value), \RecursiveIteratorIterator::SELF_FIRST);
             foreach ($iterator as $key => $value) {
                 array_splice($stack, $iterator->getDepth() + 1);
                 $pointer =& $stack[count($stack) - 1];
                 $pointer =& $pointer[$key];
                 $stack[] =& $pointer;
                 if (!$iterator->hasChildren()) {
                     $pointer[$field] = $value;
                 }
             }
         }
     }
     return $output;
 }
示例#3
0
 /**
  * Check if the Prosody Metre is KalipaaInam - If the metre matches return
  * the exact type, else return NULL
  *
  * @return Ambigous <string, NULL>
  */
 public function CheckKaliInam()
 {
     $TaazhisaiCheck = TRUE;
     $KattalaiCheck = FALSE;
     $TuraiCheck = $this->CheckLineWordCount(4, 5);
     $ViruttamCheck = $this->CheckLineWordCount(4, 4);
     /* Check for Kattalai Kaliththurai */
     if ($TuraiCheck) {
         /*
          * Check for Letter count in Each line
          */
         $Lines = explode(PHP_EOL, trim($this->InputSourceText));
         $LinesMetre = array();
         $root = $this->ParseTreeRoot;
         $rit = new RecursiveIteratorIterator(new RecursiveArrayIterator($root), RecursiveIteratorIterator::SELF_FIRST);
         $NewSentence = TRUE;
         foreach ($rit as $key => $value) {
             if ($rit->hasChildren() === FALSE) {
                 if ($NewSentence) {
                     if ($key == "nE_r" || $key == "nirY") {
                         $LinesMetre[] = $key;
                         $NewSentence = FALSE;
                     }
                 }
             } else {
                 if ($rit->getDepth() == 2) {
                     $NewSentence = TRUE;
                 }
             }
         }
         $WordCountCheck = TRUE;
         for ($LineIndex = 0; $LineIndex < count($Lines); $LineIndex++) {
             $LetterCount = $this->GetLetterCount($Lines[$LineIndex]);
             $KattalaiCount = $LetterCount['Vowel'] + $LetterCount['ConsonantVowel'];
             // echo $KattalaiCount;
             if ($LinesMetre[$LineIndex] == "nE_r" && $KattalaiCount != 16) {
                 $WordCountCheck = FALSE;
             }
             if ($LinesMetre[$LineIndex] == "nirY" && $KattalaiCount != 17) {
                 $WordCountCheck = FALSE;
             }
         }
         /*
          * Check for Vendalai in each line.. but not inbetween lines
          */
         $WordBondClassCheck = TRUE;
         $WCount = 1;
         foreach ($this->WordBond as $Bond) {
             $BondType = $Bond['bond'];
             if ($WCount % 5 != 0) {
                 if (substr($BondType, strlen($BondType) - 21) != "வெண்டளை") {
                     $WordBondClassCheck = FALSE;
                 }
             }
             $WCount++;
         }
         /*
          * Check if LastSyllableEnds with E
          */
         $LastSyllableCheck = TRUE;
         $LastSyllable = substr($this->InputSourceText, -1);
         if ($LastSyllable != "E") {
             $LastSyllableCheck = FALSE;
         }
         if ($WordBondClassCheck && $WordCountCheck && $LastSyllableCheck) {
             $KattalaiCheck = TRUE;
         }
     }
     /*
      * Check for Kalittaazhisai
      */
     if ($this->TotalLines < 2) {
         $TaazhisaiCheck = FALSE;
     }
     $LineTypeReverse = array_flip($this->LineType);
     $ProsodyLineTypes = $this->LineClass;
     $LineWordCount = array();
     foreach ($ProsodyLineTypes as $key => $value) {
         if ($key + 1 != $this->TotalLines) {
             $LineWordCount[] = $LineTypeReverse[$value];
         } else {
             $FinalLineCount = $LineTypeReverse[$value];
         }
     }
     if (count($LineWordCount) > 0) {
         if (max($LineWordCount) >= $FinalLineCount) {
             $TaazhisaiCheck = FALSE;
         }
     }
     if ($TaazhisaiCheck) {
         $MetreType = "kali_ttAZicY";
     } else {
         if ($KattalaiCheck) {
             $MetreType = "ka_TTaLY kali_ttuRY";
         } else {
             if ($TuraiCheck) {
                 $MetreType = "kali_ttuRY";
             } else {
                 if ($ViruttamCheck) {
                     $MetreType = "kali viru_tta_m";
                 } else {
                     $MetreType = NULL;
                 }
             }
         }
     }
     return $MetreType;
 }
示例#4
0
 /**
  * Constructs a new instance of HTTPRequest.
  * 
  * @param	string		$url		URL to connect to
  * @param	array<string>	$options
  * @param	mixed		$postParameters	Parameters to send via POST
  * @param	array		$files		Files to attach to the request
  */
 public function __construct($url, array $options = array(), $postParameters = array(), array $files = array())
 {
     $this->setURL($url);
     $this->postParameters = $postParameters;
     $this->files = $files;
     $this->setOptions($options);
     // set default headers
     $this->addHeader('user-agent', "HTTP.PHP (HTTPRequest.class.php; WoltLab Community Framework/" . WCF_VERSION . "; " . WCF::getLanguage()->languageCode . ")");
     $this->addHeader('accept', '*/*');
     $this->addHeader('accept-language', WCF::getLanguage()->getFixedLanguageCode());
     if (isset($this->options['maxLength'])) {
         $this->addHeader('Range', 'bytes=0-' . ($this->options['maxLength'] - 1));
     }
     if ($this->options['method'] !== 'GET') {
         if (empty($this->files)) {
             if (is_array($postParameters)) {
                 $this->body = http_build_query($this->postParameters, '', '&');
             } else {
                 if (is_string($postParameters) && !empty($postParameters)) {
                     $this->body = $postParameters;
                 }
             }
             $this->addHeader('content-type', 'application/x-www-form-urlencoded');
         } else {
             $boundary = StringUtil::getRandomID();
             $this->addHeader('content-type', 'multipart/form-data; boundary=' . $boundary);
             // source of the iterators: http://stackoverflow.com/a/7623716/782822
             if (!empty($this->postParameters)) {
                 $iterator = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($this->postParameters), \RecursiveIteratorIterator::SELF_FIRST);
                 foreach ($iterator as $k => $v) {
                     if (!$iterator->hasChildren()) {
                         $key = '';
                         for ($i = 0, $max = $iterator->getDepth(); $i <= $max; $i++) {
                             if ($i === 0) {
                                 $key .= $iterator->getSubIterator($i)->key();
                             } else {
                                 $key .= '[' . $iterator->getSubIterator($i)->key() . ']';
                             }
                         }
                         $this->body .= "--" . $boundary . "\r\n";
                         $this->body .= 'Content-Disposition: form-data; name="' . $key . '"' . "\r\n\r\n";
                         $this->body .= $v . "\r\n";
                     }
                 }
             }
             $iterator = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($this->files), \RecursiveIteratorIterator::SELF_FIRST);
             foreach ($iterator as $k => $v) {
                 if (!$iterator->hasChildren()) {
                     $key = '';
                     for ($i = 0, $max = $iterator->getDepth(); $i <= $max; $i++) {
                         if ($i === 0) {
                             $key .= $iterator->getSubIterator($i)->key();
                         } else {
                             $key .= '[' . $iterator->getSubIterator($i)->key() . ']';
                         }
                     }
                     $this->body .= "--" . $boundary . "\r\n";
                     $this->body .= 'Content-Disposition: form-data; name="' . $k . '"; filename="' . basename($v) . '"' . "\r\n";
                     $this->body .= 'Content-Type: ' . (FileUtil::getMimeType($v) ?: 'application/octet-stream.') . "\r\n\r\n";
                     $this->body .= file_get_contents($v) . "\r\n";
                 }
             }
             $this->body .= "--" . $boundary . "--";
         }
         $this->addHeader('content-length', strlen($this->body));
     }
     if (isset($this->options['auth'])) {
         $this->addHeader('authorization', "Basic " . base64_encode($options['auth']['username'] . ":" . $options['auth']['password']));
     }
     $this->addHeader('connection', 'Close');
 }
        // set the current depth
        $curDepth = $it->getDepth();
        // store the difference in depths
        $diff = abs($curDepth - $depth);
        // close previous nested levels
        if ($curDepth < $depth) {
            $output->append(str_repeat('</ul></li>', $diff));
        }
        // check if we have the last nav item
        if ($it->hasNext()) {
            $output->append('<li><a href="' . $url . '">' . $name . '</a>');
        } else {
            $output->append('<li class="last"><a href="' . $url . '">' . $name . '</a>');
        }
        // either add a subnav or close the list item
        if ($it->hasChildren()) {
            $output->append('<ul>');
        } else {
            $output->append('</li>');
        }
        // cache the depth
        $depth = $curDepth;
    }
    // if we have values, output the unordered list
    if ($output->count()) {
        echo '<ul id="nav">' . "\n" . implode("\n", (array) $output) . "\n" . '</ul>';
    }
} catch (Exception $e) {
    die($e->getMessage());
}
echo PHP_EOL . PHP_EOL . 'CLASS EXAMPLE' . PHP_EOL . PHP_EOL;