View file modules/lib/helpers/lib.php

File size: 3.15Kb
<?php
/**
 * Ant0ha's project
 *
 * @package
 * @author Anton Pisarenko <[email protected]>
 * @copyright Copyright (c) 2006 - 2010, Anton Pisarenko
 * @license http://ant0ha.ru/license.txt
 * @link http://ant0ha.ru
 */

defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');

//---------------------------------------------

/**
 * Хелпер библиотеки
 */
class lib {
	/**
	* Получение реального пути к папке
	*/
	public static function get_path($directory_id, &$db, $directory_path = array(), $i = 0) {
		$parent = $db->get_row("SELECT * FROM #__lib_directories WHERE
	 		directory_id = (SELECT parent_id FROM #__lib_directories WHERE directory_id = '". intval($directory_id) ."')
	 	");
	 	$i++;
	 	if($parent['directory_id'] != 0) {
	 		$directory_path[$i]['directory_id'] = $parent['directory_id'];
	  		$directory_path[$i]['name'] = $parent['name'];
	  		$directory_path = self::get_path($parent['directory_id'], $db, $directory_path, $i);
	  	}
	  	return $directory_path;
	}

	/**
	* Получение полного пути к папке
	*/
	public static function get_realpath($directories_array) {
		if(empty($directories_array)) return;

		foreach($directories_array AS $directory) {
			$directory_path[] = $directory['directory_id'];
		}
		if(count($directory_path) > 1) {
	   		$realpath = array_reverse($directory_path);
	   		$realpath = implode('/', $realpath);
	  	}
	  	else {
	   		$realpath = $directory_path[0];
	  	}

	  	return $realpath;
	}

	/**
	* @desc получение полного пути к папке
	* @param $array
	*/
	public static function get_namepath($directories_array, $delim = '/', $admin = FALSE) {
		if(empty($directories_array)) return;

	        $segment = $admin ? 'lib/admin' : 'lib';

		foreach($directories_array AS $directory) {
			$directory_path[] = '<a href="'. a_url($segment, 'directory_id='. $directory['directory_id']) .'">'. $directory['name'] .'</a>';
		}
		if(count($directory_path) > 1) {
	   		$realpath = array_reverse($directory_path);
	   		$realpath = implode($delim, $realpath);
	  	}
	  	else {
	   		$realpath = $directory_path[0];
	  	}

	  	return $realpath;
	}

	/**
	* Функция рекурсивного копирования
	*/
	public static function r_copy($source, $dest) {
	    # Simple copy for a file
	    if (is_file($source)) {
	        return copy($source, $dest);
	    }

	    # Make destination directory
	    if (!is_dir($dest)) {
	        mkdir($dest);
	    }

	    # If the source is a symlink
	    if (is_link($source)) {
	        $link_dest = readlink($source);
	        return symlink($link_dest, $dest);
	    }

	    # Loop through the folder
	    $dir = dir($source);
	    while (false !== $entry = $dir->read()) {
	        // Skip pointers
	        if ($entry == '.' || $entry == '..') {
	            continue;
	        }

	        // Deep copy directories
	        if ($dest !== "$source/$entry") {
	            self::r_copy("$source/$entry", "$dest/$entry");
	        }
	    }

	    // Clean up
	    $dir->close();
	    return true;
	}
}
?>