Category Archives: Web

Web

WordPress Multisite Бележки

Готини плъгини за  WordPress Multisite е:

1. Multisite Plugin Manager
2. Hyper Cache Extended . Подкрепете Българаското. На адаша Мартин!
3. Diamond MultiSite Widgets
4. All in One SEO Pack
5. Akismet
6. Yet Another Related Posts Plugin
7. SEO Smart Links

За наспамени блогове от коментари могат да се премахнат лесно така:

delete from zna_comments where comment_approved!=1;
delete from zna_1_comments where comment_approved!=1;
delete from zna_2_comments where comment_approved!=1;
delete from zna_3_comments where comment_approved!=1;

Ако ПРЕКАЛЕНО много са наспамени т.е. 100% така:
delete from wp_comments;
delete from zna_1_comments;
delete from zna_2_comments;
delete from zna_3_comments;

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Добавяне на коментари от facebook на сайта

Идеята е да се ползва системата за коментари на facebook:

1. Създава се приложение за коментари:

http://www.facebook.com/developers/createapp.php

App Display Name: example_comments

App Domain:example.com

Website-> Site URL: http://example.com

http://developers.facebook.com/tools/comments?id=191130727657303

2. Взима се кода

http://developers.facebook.com/docs/reference/plugins/comments/

<div id='fb-root'></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = '//connect.facebook.net/bg_BG/all.js#xfbml=1&appId=365185030181491';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class='fb-comments' data-href='http://firmi1.com' data-num-posts='2' data-width='640'></div>

3. Слага се и друг код

<meta property='fb:admins' content='100000589059407' />
<meta property='fb:app_id' content='365185030181433' />

$url="http://example.com/haha/url";
echo "
<br><br><b>Коментирай свободно:</b>
<br><br>";
get_facebook_comment($url,510);

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Автоматично обновяване на 10 WordPress блога за 10 секунди

Идеята е, че трябва да се обновят 10 блога на WordPress и то бързичко с идеята при следващ ъпдейт да става лесно.
Понеже системата е писана на php реших и скриптчет ода бъде на php . Ето го и него:

<?php
#############################################
$wordpress_root_dirs=array(
"/var/www/sait1.com/",
"/var/www/sait2.com/",
"/var/www/sait3.com/",
"/var/www/sait4.com/",
"/var/www/sait5.com/",
"/var/www/sait6.com/",
"/var/www/sait7.com/",
"/var/www/sait8.com/",
"/var/www/sait9.com/",
"/var/www/sait10.com/"
);

$BDIR="/tmp/backup_upgraded_wordpress";
$NDIR="$BDIR/latest_wordpress_files";

#############################################

function dhs_lr_str($a,$b,$c){$a=explode("$a",$c);$b=explode("$b",$a[1]);return addslashes(trim($b[0]));};
$count_wp_blogs=count($wordpress_root_dirs)-1;

@system("mkdir -p $NDIR");
chdir("$NDIR");

echo "
###########################################################################
######## Mass Wordpress Updater ver. 0.1 by amri -- www.mpetrov.net ########
###########################################################################
\n";

echo "Downloading Latest WordPress … \n";
system("wget -q http://wordpress.org/latest.zip -O $NDIR/latest.zip");
system("unzip -o -q $NDIR/latest.zip");

$count_upd_wp=0;
foreach ($wordpress_root_dirs as $RDIR)
{
$count_upd_wp++;
echo "Update Wordpress blogs $count_upd_wp/$count_wp_blogs\n";

$buf=file_get_contents("$RDIR/wp-config.php");

$DB_NAME=trim(dhs_lr_str("define('DB_NAME', '","'",$buf));
$DB_USER=trim(dhs_lr_str("define('DB_USER', '","'",$buf));
$DB_PASSWORD=trim(dhs_lr_str("define('DB_PASSWORD', '","'",$buf));
$DB_HOST=trim(dhs_lr_str("define('DB_HOST', '","'",$buf));
$DB_TABLE=trim(dhs_lr_str('$table_prefix  = \","'",$buf));
$WDIR="$BDIR/$DB_NAME";

@system("mkdir -p $WDIR");
chdir("$WDIR");

echo "Backup Old WordPress ($RDIR) DB: $DB_NAME\n";
system("mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $WDIR/$DB_NAME.sql");

echo "Backup Old WordPress ($RDIR) Files\n";
system("cp -Rp $RDIR/ $WDIR/wordress_files/");

echo "Replace Old WordPress($RDIR) Files\n";
system("cp -ar $NDIR/wordpress/* $RDIR/");

mysql_connect($DB_HOST,$DB_USER,$DB_PASSWORD);mysql_select_db($DB_NAME);
$result = mysql_query("select option_value from ".$DB_TABLE."options where option_name='siteurl'");
$row = mysql_fetch_array($result);
$siteurl=stripslashes($row['option_value']);

$ch1=curl_init();
curl_setopt($ch1,CURLOPT_URL,"$siteurl/wp-admin/upgrade.php?step=1&backto=");
curl_setopt($ch1,CURLOPT_RETURNTRANSFER,1);
$buf=curl_exec($ch1);
curl_close($ch1);
};
?>

Изходът е ето това:

###########################################################################
######## Mass WordPress Updater ver. 0.1 by amri -- www.mpetrov.net ########
###########################################################################

Downloading Latest WordPress …
Update WordPress blogs 1/12
Backup Old WordPress (/var/www/sait1.com/) DB: sait1DB
Backup Old WordPress (/var/www/sait1.com/) Files
Replace Old WordPress(/var/www/sait1.com/) Files
Update WordPress blogs 2/12
Backup Old WordPress (/var/www/sait2.com/) DB: sait2DB
Backup Old WordPress (/var/www/sait2.com/) Files
Replace Old WordPress(/var/www/sait2.com/) Files
Update WordPress blogs 3/12
Backup Old WordPress (/var/www/sait3.com/) DB: sait3DB
Backup Old WordPress (/var/www/sait3.com/) Files
Replace Old WordPress(/var/www/sait3.com/) Files
….

Може да го изтеглите от тук: wordpress_mass_upgrade

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

за Добруджа

Интересна публикация за Добруджа:

Заключена от долното течение на Дунав и Черно Море , в триъгълника между Балчик, Силистра и Дунавското устие, Добруджа е земята, на която през VII в. за пръв път са стъпили конниците на Аспарух и основали българската държава….

Източник:dobrudja-news.com

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

WordPress проблем с upload

Преместих блога на друга машина и като реших да кача тази снимка ми върна това съобщение:

“File.gif” не успя да бъде качен поради грешка
Неуспешно създаване на директория /var/www/wp-content/uploads/2011/12. Имате ли право да пишете в родителската ѝ категория?

Решението е просто да се каже какъв е абсолютния път на блога в базата:

update wp_options set option_value='/new_www/wp-content/uploads' where option_name='upload_path';

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

php засичане енкодинг на текст

function detect_encoding($string)
{
return strtolower(mb_detect_encoding("$string",'utf-8,windows-1251'));
}//End of detect_encoding($string)

$string="мартин петров";#stringa e windows1251;
echo detect_encoding($string);
//Shte wyrne windows-1251, ako stringa e utf-8 shte wyrne utf-8

 

function cp1251_to_utf8($s)
{
if ( mb_check_encoding("$s","cp1251") == 1){return iconv("cp1251","utf8",$s);}else { return $s; };
}
function utf8_to_cp1251($s)
{
if ( mb_check_encoding("$s","utf-8") == 1){return iconv("utf8","cp1251",$s);}else{return $s;}
}//End of utf8_to_cp1251($s)

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Без www в нашите адреси чрез htaccess

Идеята е да се премахне "www." от всеки адрес т.е. когато се отвори http://www.example.com да редиректне към http://example.com

Ето няколко причини защо да не се ползва "www":

1. По- къси адреси
2. Предотвратяване възможността за дублирано съдържание

.htaccess метод за редирект от www.example.com -> example.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

.htaccess метод за редирект от example.com -> www.example.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Инсталиране на Opencart 1.4.9.5 (May 10, 2011) и добавяне на Български Език

Малка статия за инсталиране на Opencart с Български език . За хората които незнаят какво е това с едно изречение ще кажа: OpenCart е Open Source Онлайн магазин.

Статията е проста за изпълнението. Единствено трябва да се изпълняват стъпките 🙂  ( е има неща които не са написани сигурно, но се подразбира, че се знаят). Успех 🙂

# Инсталиране на Opencart 1.4.9.5 (May 10, 2011)

1. Изтегляне и разархивиране на пакета

wget http://opencart.googlecode.com/files/opencart_v1.4.9.5.zip
unzip opencart_v1.4.9.5.zip

2. Сетване не по- долу изброените права на съответните директории

chmod 0777 image/
chmod 0777 image/cache/
chmod 0777 image/data/
chmod 0777 system/cache/
chmod 0777 system/logs/
chmod 0777 download/
chmod 0777 config.php
chmod 0777 admin/config.php

3. Отваря се инсталацията т.е. http://example.com/
въвежда се MySQL user , pass, database и table префикс, admin pass и админ email

4. Изтрива се директорията install

rm -fr install

# Opencart 1.4.9.5 и добавяне на Български Език

5. Изтегляме Българския Lang файл

Линк на сайта е: http://www.opencart.com/index.php?route=extension/extension/info&extension_id=623&filter_username=containR

За да се изтегли:

wget 'http://www.opencart.com/index.php?route=extension/extension/download&extension_download_id=4321' -O bg.zip

6. Разархивира се сваления файл и съдържанието му се кача съответно в "admin\language" и "catalog\language" .

7. Настройки на езика от административния панел (http://example.com/admin/):

От административния панел на магазина se изберa System -> Localisations -> Languages -> Insert.
Попълват се полетата:
Language Name: Bulgarian
Code: BG
Locale: bg.UTF-8,BG,bulgarian
Image: bg.png
Directory: bulgarian
Filename: bulgarian
Status: Enabled
Sort Order: 1

8. Сетване, че ще се ползва Българският lang файл

System -> Settings -> Locale
Language: Bulgarian
Administration Language: Bulgarian

PS: Езиковата версия е за Opencart 1.4.9.1, но работи без проблем(поне аз не видях такъв)

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Какво е ezSQL и как да го ползваме

Какво е ezSQL?

ezSQL е Open Source PHP клас за връзка с бази данни. Негов автор е Justin Vincent. Този клас поддържа следните бази данни: МySQL, Oracle8, SQLite (PHP).

Защо да ползваме ezSQL?
1. С него се пести време при писането на PHP код.
2. Поддържа кеширане на SELECT заявките.
3. Напълно безплатен, с възможност да се ползва абсолютно във всички възможни проекти.
4. Има възможност за debug .
5. Класа ezSQL поддържа Smarty.
6. Много малък и простичък клас които е напълно функционален и лесен за редактиране при необходимост 🙂
7. Използването на DB абстрактен слой позволява лесното мигриране от една DB към  друга. Пример: Необходимо е мигриране от Oracle към MySQL. В този случай единственото необходимо нещо да се направи е include на подходящия допълнителен клас към ezSQL.
8. За мен WordPress е сериозен пример за добър проект писан от добри PHP разработчици и именно това дава една положителна точка на ezSQL , понеже DB класа на WordPress "wpdb" е базиран на ezSQL.
9. Чрез ezSQL се пести доста код.

За да не изпадам в излишна теория и обща информация ще започна с примерите(в този случай примерите са най- добрата документация):

Първо трябва да се изтегли ezSQL класа от официалния сайт на Justin Vincent-> Сайт на ezSQL

След като се изтегли е необходимо в нашия пример да се включи( (include) ядрото на ezSQL (ez_sql_core.php) и след това базата с която ще се работи(в случая е MySQL: (ez_sql_mysql.php) ):

include_once "../shared/ez_sql_core.php";
include_once "ez_sql_mysql.php";
$db = new ezSQL_mysql('db_user','db_password','db_name','db_host');

Сега вече можем да правим примера.

1. Простa INSERT/UPDATE заявка:

$db->query("INSERT INTO users (id, name, email) VALUES (NULL,'Ribok','root@boogle.com')");

или

$db->query("UPDATE users SET name = 'Ribok' WHERE id = 4");

2. SELECT заявка за извеждане на един ред:

$user = $db->get_row("SELECT name, email FROM users WHERE id = 4");

echo $user->name;
echo $user->email;

3. Бързо асоцииране на променлива с резултат от просто select с един ред:

$var = $db->get_var("SELECT count(*) FROM users");

echo $var;

4. SELECT заявка и извеждане на многобройни редове:

$results = $db->get_results("SELECT name, email FROM users");

foreach ( $results as $user )
{
echo $user->name;
echo $user->email;
}

5. Select заявка за конкретна колона:

foreach ( $db->get_col("SELECT name,email FROM users",0) as $name )
{
echo $name;
}

6. Изследване на заявките, чрез DEBUG(Активира се по- следния начин):

$db->debug();

7. Активиране на кеширането на заявки:

$db->cache_timeout = 24;
$db->cache_dir = '/tmp/ezsql_cache';
$db->use_disk_cache = true;
$db->cache_queries = true;

Времето се измерва в часове, но ако желаете да бъде в секунди е необходимо да се направи малка корекция.
Във файл "ez_sql_core.php" ,  ред "317" се заменя:

if ( (time() -- filemtime($cache_file)) > ($this->cache_timeout*3600) )

със:

if ( (time() -- filemtime($cache_file)) > ($this->cache_timeout) )

PS0: Ако някои има някакви допълнения или коментари може да ги сподели.

PS1: В никакъв случай не твърдя, че това е най- страхотния клас, защото има и други добри като AdoDB които е с доста дълга история. Идеята на това ръководство е да бъде в полза на някои търсещ или ползващ такъв клас :).

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)