<?php

/**
 * LazyMePHP
* @copyright This file is part of the LazyMePHP developed by Duarte Peixinho
* @author Duarte Peixinho
*/

namespace LazyMePHP\Helper;

function RMDIR($folder)
{
	// Return true because folder doesnt exist
	if (!is_dir($folder)) return true;

	// Check permissions
	if (is_dir($folder) && is_writable($folder))
	{
		return \rmdir($folder);
	}
	return false;
}
function MKDIR($name)
{
	// Check if exists and you have permissions
	if (!is_dir($name))
	{
		return \mkdir($name, 0775);
	}
	return false;
}
function UNLINK($file)
{
	// Return true because folder doesnt exist
	if (!is_file($file)) return true;

	// Check if exists and you have permissions
	if (is_file($file) && is_writable($file))
	{
		return \unlink($file);
	}
	return false;
}
function TOUCH($name)
{
	// Check if exists and you have permissions
	if (!is_file($name))
	{
		if (\touch($name))
			return chmod($name, 0775);
	}
	return false;
}
function clear() {
  system('clear');
  echo "***************************************************************************************\n";
  echo "************************************* LazyMePHP ***************************************\n";
  echo "***************************************************************************************\n";
  echo "\n";
}
function printselect($title, $options, $selected, $addinfo = null, $addinfoColumn = "") {
  \LazyMePHP\Helper\clear();
  echo "$title\n\n";
  echo str_pad("Table List", 40)."\t\t\t$addinfoColumn\n";
  foreach($options as $i => $o) echo str_pad(($i+1).": ".$o.($selected && $o==$selected?" *":""),40).($addinfo?" \t\t\t[".$addinfo[$o]."] ":"")."\n";
}
function select($title, $options, $selected = null, $multiSelection = false, $addinfo = null) {
  printselect($title, $options, $selected, $addinfo);
  $sel = false;
  while(strtolower($sel)!='q')
  {
    if ($multiSelection) echo "\nSelect the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'q' to cancel): ";
    else echo "\nPlease, select the appropriate number ('q' to cancel): ";
    $sel = read();
    if (intval($sel) || strlen($sel) == 0 || ($multiSelection && (strpos($sel,',') || strtolower($sel) == 'a' || strlen($sel)==0)))
    {
      if ($multiSelection) {
        if (strlen($sel)==0) $sel = 'a';
        if (strpos($sel,',')) {
          $selection = array();
          foreach(explode(',',$sel) as $s) {
            if (intval($s) && intval($s)-1<count($options))
            $selection[] = ['value' => intval($s)-1, 'name' => $options[intval($s)-1]];
            else echo "Invalid option $s\n";
          }
        } else {
          if (strtolower($sel)=='a') {
            $selection = array();
            foreach($options as $i => $o) $selection[] = ['value' => intval($i), 'name' => $o];
            return $selection;
          } else {
            if (intval($sel)) return array(['value' => (intval($sel)-1), 'name' => $options[(intval($sel)-1)]]);
          }
        }
        return $selection;
      } else {
        if (intval($sel)) return ['value' => intval($sel)-1, 'name' => $options[intval($sel)-1]];
        else if (strlen($sel)==0) return ['value' => array_search($selected, $options), 'name' => $options[array_search($selected, $options)]];
      }
    } else if (strtolower($sel) != 'q') $sel = false;
  }
  return false;
}
function promptYesNo($message) {
  $o = false;
  while(strtolower($o)!='y' && strtolower($o)!='n') {
    echo $message." [Y/n]: ";
    $o = read();
    if (strlen($o)==0) return true;
    switch(strtolower($o)) {
      case 'y':
        return true;
        break;
      case 'n':
        return false;
        break;
      default:
      $o = false;
      break;
    }
  }
}
function read() {
  $handle = fopen ("php://stdin","r");
  $line = fgets($handle);
  return trim($line);
}

