Етикет "PHP"

ApiGen – Що е то и как се използва?

Здравейте! Днес ми се наложи да използвам ApiGen. Лично на мен много ми хареса и за това реших да направя този урок.

Що е ApiGen?

ApiGen

ApiGen е инструмент за създаване на професионална API документация за PHP проекти. Подобен е на phpDocumentator/phpDoc.

ApiGen използва:

  • Темплейтната система на Nette Framework  и Texy, за да прави полезна и лесна за четене HTML документация;
  • FSH, за да подчертава изходния код (highlighting);
  • TokenReflection, за да описва документирания изходен код.

Pagination Script [PHP]

Здравейте! Тъй като работех по един проект, ми се наложи да си направя скрипт за странициране. Реших да го лицензирам под MIT, за да може всеки, който иска да го използва без граници :). Можете да видите кода в PasteBin като кликнете тук, или просто да го копирате от тук:

<?php
/* Pagination script v0.1
 * Author: Yasen Georgiev
 * Email: avbincco@gmail.com
 * Web site: http://ygeorgiev.com/
 * License: MIT - http://ygeorgiev.com/licenses/MIT-LICENSE
*/

$commentsPerPage = 5; // Items per page
$currentPage = (int)$_GET['p']; // Your pagination's GET parameter
$getNumRows = mysql_num_rows(mysql_query('SELECT `column` FROM `table`')); // Set your Query to get count of the results in table
$totalPages = $getNumRows/$commentsPerPage;
$intvalPages = intval($totalPages);
$lastPage = ceil($getNumRows / $commentsPerPage);
$paginationPath = 'page.php?id='.(int)$_GET['id'].'&p='; //Set your URL path

if($totalPages-$intvalPages>0) {
    $totalPages = $intvalPages+1;
}

if($currentPage <= 1 || $currentPage>$totalPages) {
    $start = 0;
    $end = $commentsPerPage;
    $currentPage = "1";
} else {
    $start = ($currentPage-1)*$commentsPerPage+1;
    $end = $currentPage*$commentsPerPage;
}
if($lastPage>1) {
    if($currentPage > 1) {
        $pagesNum .= '<a href="'.$paginationPath.($currentPage-1).'">« Previous page</a> ';
    }
    if($lastPage <= 10) {
        for ($i = 1; $i <= $lastPage; $i++) {
            $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
        }
    } else {
        if($currentPage <= 5) {
            for($i = 1; $i <= 10; $i++) {
                $pagesNum .= ' | <a href="'.$paginationPath.$i.'">'.$i.'</a> ';
            }
            $pagesNum .= ' | ... | <a href="'.$paginationPath.$lastPage.'">'.$lastPage.'</a> | ';
        } elseif($currentPage > 5 && $currentPage < ($lastPage-5)) {
            $pagesNum .= ' | <a href="'.$paginationPath.'1">1</a> | ... | ';
            for($i = $currentPage-3; $i <= $currentPage+3; $i++) {
                $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
            }
            $pagesNum .= ' ... | <a href="'.$paginationPath.$lastPage.'">'.$lastPage.'</a> | ';
        } elseif($currentPage >= ($lastPage-5)) {
            $pagesNum .= ' | <a href="'.$paginationPath.'1">1</a> | ... | ';
            if($currentPage < ($lastPage-2)) {
                for($i = $currentPage-3; $i <= $currentPage + 3; $i++) {
                    $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
                }
            } else {
                for($i = $lastPage - 5; $i <= $lastPage; $i++) {
                    $pagesNum .= '<a href="'.$paginationPath.$i.'">'.$i.'</a> | ';
                }
            }
        }
    }
    if($currentPage < $lastPage) {
        $pagesNum .= ' <a href="'.$paginationPath.($currentPage+1).'">Next page »</a>';
    }
    $nomeration = str_replace('<a href="'.$paginationPath.$currentPage.'">'.$currentPage.'</a>','<b>'.$currentPage.'</b>',$pagesNum);
}

echo $nomeration; //Show the pagination
?>

Доста мащабен проект – DNS Manage

DNS Manage

DNS Manage

Здравейте, приятели!

От няколко седмици аз и моят приятел Христо Димитров работим по един сравнително мащабен проект – DNS Manage.

Чрез него Вие можете да добавите домейна си в системата и така лесно да контролите DNS записите. Например чрез DNS Manage много лесно можете да добавите поддомейн.

Друга опция е да предлагате създаването на поддомейни към Вашия домейн. Това става изключително лесно – само трябва да настроите DNS сървърите на домейна си към нашите – ns1.dnsmanage.org и ns2.dnsmanage.org.

Поредната опция е да имате безплатни поддомейни, които да насочите към хостинг акаунта си.

Тъй като проекта е още в ранен бета етап, за да се регистрирате Ви трябват бета-кодове. Тъй като съм един от създателите, Ви предоставям 10 броя. След регистрацията си, всеки потребител получава пет:

  1. bfiz64vwps
  2. fuw8m9qzh6
  3. vst2jedair
  4. tya0h7f1b3
  5. 8h02uy6dzp
  6. 6rtmwcaj3x
  7. 8tn36fbcmo
  8. u96aewd1s8
  9. tsm5h3vdxq
  10. rkiletmd32

Ако Ви трябват още – свържете се с мен /най-лесно става от страницата „Контакти“/.

За достъп до бета-сайта, използвайте ТОЗИ линк. Моля, ако откриете проблеми със системата, ми пишете!

Поздрави!


Warning: Undefined variable $wp_sh_class_name in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1002

Warning: Undefined variable $wp_sh_class_name in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1002

Fatal error: Uncaught Error: Undefined constant "XML" in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php:1048 Stack trace: #0 /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php(979): wp_sh_load_scripts_on_footer() #1 /home/ygeorgi/public_html/blog_old/wp-includes/class-wp-hook.php(308): wp_sh_check_valid_tag('') #2 /home/ygeorgi/public_html/blog_old/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array) #3 /home/ygeorgi/public_html/blog_old/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #4 /home/ygeorgi/public_html/blog_old/wp-includes/general-template.php(3059): do_action('wp_footer') #5 /home/ygeorgi/public_html/blog_old/wp-content/themes/ygeorgiev2014/footer.php(16): wp_footer() #6 /home/ygeorgi/public_html/blog_old/wp-includes/template.php(783): require_once('/home/ygeorgi/p...') #7 /home/ygeorgi/public_html/blog_old/wp-includes/template.php(718): load_template('/home/ygeorgi/p...', true, Array) #8 /home/ygeorgi/public_html/blog_old/wp-includes/general-template.php(92): locate_template(Array, true, true, Array) #9 /home/ygeorgi/public_html/blog_old/wp-content/themes/ygeorgiev2014/index.php(102): get_footer() #10 /home/ygeorgi/public_html/blog_old/wp-includes/template-loader.php(106): include('/home/ygeorgi/p...') #11 /home/ygeorgi/public_html/blog_old/wp-blog-header.php(19): require_once('/home/ygeorgi/p...') #12 /home/ygeorgi/public_html/blog_old/index.php(17): require('/home/ygeorgi/p...') #13 {main} thrown in /home/ygeorgi/public_html/blog_old/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048