Created
March 23, 2014 05:12
-
-
Save duyet/9719089 to your computer and use it in GitHub Desktop.
Get line of code for project
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Pack of ypCore System | |
* Code by LvDuit | |
* (c) 2014 | |
* Contact: [email protected] | |
*/ | |
error_reporting(0); | |
class lineCount { | |
// Don't modify these | |
var $x = 0; | |
var $cnt = array(); | |
// Files to include in the count | |
var $ext = array("php","phtml","php3","inc","js","html", "css", "htm", "ini"); | |
// If no directory is set, the directory of the script will be used | |
var $dir = ""; | |
function countLines($dir) { | |
if (is_dir($dir)) { | |
if ($handle = opendir($dir)) { | |
// Loop through files | |
while (false !== ($file = readdir($handle))) { | |
if ($file != "." && $file != "..") { | |
$filePath = $dir."/".$file; | |
if (is_dir($filePath)) { | |
// Item is another folder, call the function again | |
$this->countLines($filePath); | |
} else { | |
// Item is a file, get some info about it | |
$fileName = explode("/",$filePath); | |
$fileDir = $fileName[(count($fileName)-2)]; | |
$fileName = $fileName[(count($fileName)-1)]; | |
$fileExt = explode(".",$fileName); | |
$fileExt = $fileExt[(count($fileExt)-1)]; | |
if (in_array($fileExt,$this->ext)) { | |
// Open the file, get line count | |
$fp = fopen($filePath, "r"); | |
$buffer = rawurlencode(fread($fp, filesize($filePath))); | |
$buffer = explode("%0A", $buffer); | |
$numLines = count($buffer); | |
fclose($fp); | |
// Add the information to our count array | |
$this->cnt[$this->x]['dir'] = $dir; | |
$this->cnt[$this->x]['file'] = $fileName; | |
$this->cnt[$this->x]['count'] = $numLines; | |
$this->x++; | |
} | |
} | |
} | |
} | |
closedir($handle); | |
} else { | |
return false; | |
} | |
} else { | |
return false; | |
} | |
} | |
function summary($output=1) { | |
// $output | |
// 1 to generate a summary and file list | |
// 0 to get an associative array with the totals | |
if (!(is_dir($this->dir))) { | |
// No directory given, use document root | |
$this->dir = $_SERVER['DOCUMENT_ROOT']; | |
} | |
$this->countLines($this->dir); | |
$listOutput = ""; | |
$totalLines = 0; | |
$usedDir = array(); | |
for ($i=0;$i<count($this->cnt);$i++) { | |
$totalLines += $this->cnt[$i]['count']; | |
if (!(in_array($this->cnt[$i]['dir'],$usedDir))) { | |
if ($output==1) { | |
$listOutput .= " <TR>\n"; | |
$listOutput .= " <TD COLSPAN=\"2\" BGCOLOR=\"#EEEEEE\" WIDTH=\"100%\" ALIGN=\"left\" STYLE=\"border-bottom: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC\"><FONT STYLE=\"font-family: arial; font-size: 9pt\"><B>".$this->cnt[$i]['dir']."</B></FONT></TD>\n"; | |
$listOutput .= " </TR>\n"; | |
} | |
$usedDir[] = $this->cnt[$i]['dir']; | |
} | |
if ($output==1) { | |
$listOutput .= " <TR>\n"; | |
$listOutput .= " <TD WIDTH=\"80%\" ALIGN=\"left\" STYLE=\"border-bottom: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC\"><FONT STYLE=\"font-family: arial; font-size: 9pt\">".$this->cnt[$i]['file']."</FONT></TD>\n"; | |
$listOutput .= " <TD WIDTH=\"20%\" ALIGN=\"center\" STYLE=\"border-bottom: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC\"><FONT STYLE=\"font-family: arial; font-size: 9pt\">".number_format($this->cnt[$i]['count'])."</FONT></TD>\n"; | |
$listOutput .= " </TR>\n"; | |
} | |
} | |
$totalFiles = number_format(count($this->cnt)); | |
$totalLines = number_format($totalLines); | |
$totalFolders = number_format(count($usedDir)); | |
if ($output==1) { | |
print "<CENTER>\n"; | |
print "<B><FONT STYLE=\"font-family: arial; font-size: 13pt\">".$this->dir."</B></FONT><BR><BR>\n\n"; | |
print "<TABLE WIDTH=\"85%\" BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"0\">\n"; | |
print " <TR>\n"; | |
print " <TD WIDTH=\"10%\" ALIGN=\"left\"><FONT STYLE=\"font-family: arial; font-size: 11pt\"><B>Summary:</B> ".$totalFolders." folder(s), ".$totalFiles." file(s), ".$totalLines." lines of code</FONT></TD>\n"; | |
print " </TR>\n"; | |
print "</TABLE>\n"; | |
print "<TABLE WIDTH=\"85%\" CELLPADDING=\"6\" CELLSPACING=\"1\" STYLE=\"border-top: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC\">\n"; | |
print " <TR>\n"; | |
print " <TD WIDTH=\"80%\" ALIGN=\"left\" BGCOLOR=\"#4C6177\" STYLE=\"border-bottom: 1px solid #182C41; border-right: 1px solid #182C41\"><FONT STYLE=\"font-family: arial; font-size: 11pt; color: #FFFFFF\"><B>Filename</B></FONT></TD>\n"; | |
print " <TD WIDTH=\"20%\" ALIGN=\"center\" BGCOLOR=\"#4C6177\" STYLE=\"border-bottom: 1px solid #182C41; border-right: 1px solid #182C41\"><FONT STYLE=\"font-family: arial; font-size: 11pt; color: #FFFFFF\"><B>Lines</B></FONT></TD>\n"; | |
print " </TR>\n"; | |
print $listOutput; | |
print "</TABLE>\n"; | |
print "<TABLE WIDTH=\"85%\" BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"0\">\n"; | |
print " <TR>\n"; | |
print " <TD WIDTH=\"10%\" ALIGN=\"left\"><FONT STYLE=\"font-family: arial; font-size: 11pt\"><B>Summary:</B> ".$totalFolders." folder(s), ".$totalFiles." file(s), ".$totalLines." lines of code</FONT></TD>\n"; | |
print " </TR>\n"; | |
print "</TABLE>\n"; | |
print "</CENTER>\n"; | |
} else { | |
return array("files"=>$totalFiles,"lines"=>$lines,"folders"=>$totalFolders); | |
} | |
} | |
} | |
?> | |
<!doctype html> | |
<HTML> | |
<HEAD> | |
<TITLE>Number of line code ypCore</TITLE> | |
</HEAD> | |
<BODY BGCOLOR="#FFFFFF"> | |
<CENTER><h1 style="font-family: sans-serif;">ypCORE Line Code Couter</h1></CENTER> | |
<?php | |
$lineCount = new lineCount(); | |
// If no directory is given, it will use the directory of the script | |
$lineCount->dir="."; | |
// Use this method to output the summary and list of files to the page | |
// You can customize the HTML from within the class | |
$lineCount->summary(1); | |
// Use this method to get the totals as an associative array: | |
$totals = $lineCount->summary(0); | |
print_r($totals); | |
?> | |
</BODY> | |
</HTML> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment