مستخدم:وهراني/صيانة
روبوت لأعمال الصيانة برنامج آلي للقيام بأعمال صيانة آلية ونصف آلية. الكود يعتمد على مجموعة من استعلام SQL (راجع النقاش : ويكيبيديا:الميدان/تقنية - مهمة بوتية : حذف {{غير مصنفة}} من المقالات المصنفة)
- مجموعة مهام الصيانة هي :
- حذف بعض القوالب غير المستخدمة
- تصحيح وضع مقالة مصنفة موسومة غير مصنفة
- حذف قالب:يتيمة من مقالة تصل إليها
- ترشيح تصنيفات صيانة فارغة للحذف السريع
- وسم تصنيفات غير مستخدمة بـ قالب {{تصنيف غير مستخدم}}
- وسم مقالات يتيمة غير موسومة بقالب {{يتيمة}}
- وسم ملفات استعمال عادل غير مستخدمة بقالب {{صورة استعمال عادل يتيمة}}
- إزالة الوسم من ملفات استعمال عادل مستخدمة وموسمة بقالب {{صورة استعمال عادل يتيمة}}.
- مقالات غير مصنفة. المطلوب: وسمها بقالب {{غير مصنفة}}.
- استخراج قوائم المقالات بعناوين بها تشكيل.
- استخراج قوائم التصنيفات غير المصنفة.
- استخراج قوائم صفحات نقاش كبيرة الحجم لبوت الأرشفة الآلية
- استخراج قوائم لصفحات النقاش اليتيمة
- حذف تصنيف:أشخاص على قيد الحياة من مقالة لشخص متوف.
طریقة العمل
عدلهذا الكود يعمل على خوادم تولابز، ما يستوجب امتلاك حساب SQL (اسم المستخدم وكلمة السر) إضافة إلى حساب البوت (اسم المستخدم وكلمة السر).
يمكن لهذا الكود تنفيذ مهمة أو أكثر عند التشغيل. مثال :
php my_script_name.php 1 2 3 9
- هذا الأمر ينفذ المهمات رقم 1 و 2 و 3 و 9 على التوالي (حسب ترقيم المهام المشار إليه أعلاه)
الإشكالات
عدليرجى وضع كل حالة خاطئة لاحظتموها في صفحة النقاش لهذه الصفحة.
الكود المصدري
عدللاستعمال هذا الكود : راجع مساعدة:الشروع في العمل مع بيشي
<?php
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
require_once( /* PATH TO PEACHY */ . '/Init.php' );
define( 'BootMsg', "[[مستخدم:وهراني/صيانة|أعمال صيانة]] : " );
$months = array('','يناير','فبراير','مارس','أبريل','مايو','يونيو','يوليو','أغسطس','سبتمبر','أكتوبر','نوفمبر','ديسمبر');
function remove_tpl($txt,$tplnames){
if(preg_match_all('/{{([^}]*)}}/',$txt,$r) === false ) return false;
if(!is_array($tplnames)) $tplnames = preg_split("/\\|/",$tplnames);
if(count($r)<1) return false;
$newtxt =$txt;
for($i=0;$i<count($r[1]);$i++){
$param = preg_split("/\\|/",$r[1][$i]);
if(in_array(trim($param[0]) ,$tplnames))
$newtxt = str_replace(array("\\n".$r[0][$i],$r[0][$i]),'',$newtxt);
}
return $newtxt;
}
function removeTPLs(&$wiki) {
$removetpls = array(
'يوم شهر عام'=> array('يوم شهر عام','يوم شهر سنة','Use dmy dates')
,'Use Australian English' => array('Use Australian English')
,'Use British English' => array('Use British English')
//,'' => array('','')
);
cecho("\n[Remove unuseful templates|INFO] \n\n");
foreach($removetpls as $tpl=>$lst) {
$tpl = $wiki->initPage("قالب:".$tpl);
$al = $tpl->embeddedin(0);
print_r($al);
foreach($al as $title){
if(is_array($title)) $title = $title['title'];
$article = $wiki->initPage($title);
$txt = $article->get_text();
$txt = remove_tpl($txt,$lst);
$article->edit($txt,BootMsg."حذف قوالب غير مستخدمة : ".implode(' - ', $lst));
}
}
}
/*
تصحيح وضع مقالة مصنفة موسومة غير مصنفة
*/
function removeUnCatFromCatPages(&$wiki,&$mysqli) {
$query = "select page_title "
."from page "
."where page_namespace = 0 "
."and page_is_redirect = 0 "
."and page_id in (select cl_from from categorylinks where cl_to = 'جميع_المقالات_غير_المصنفة' ) "
."and page_id in ( " // in unhidden cat
."select cl_from from categorylinks where cl_to in "
."( "
."select page_title from page "
."where "
."page_namespace = 14 "
."and page_id not in (select cl_from from categorylinks where cl_to = 'تصنيفات_مخفية' ) "
."and page_title not like '%غير_مصنفة%' "
.")"
.")"
;
cecho("\n\n[Running NoCat SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
$article = $wiki->initPage($title);
$txt = $article->get_text();
$txt = remove_tpl($txt,"غير مصنفة|Uncategorized|غير مصنف|Uncategorised|Uncat");
$article->edit($txt,BootMsg."تصحيح وضع مقالة مصنفة موسومة غير مصنفة");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
حذف قالب:يتيمة من مقالة تصل إليها
*/
function unmarkUnorphPage(&$wiki,&$mysqli) {
$query = <<<QUERY
SELECT p.page_title , COUNT(pl.pl_from) as Nb
FROM page p
INNER JOIN categorylinks c ON p.page_id = c.cl_from AND c.cl_to = "جميع_المقالات_اليتيمة"
INNER JOIN pagelinks pl ON p.page_title = pl.pl_title AND p.page_namespace = pl.pl_namespace
INNER JOIN page p2 ON p2.page_id = pl.pl_from AND pl.pl_from_namespace = 0 and p2.page_is_redirect=0
GROUP BY p.page_title
having COUNT(pl.pl_from)>2
# ORDER BY COUNT(pl.pl_from) DESC
# limit 50
QUERY;
cecho("\n\n[Running Not orphan SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
$article = $wiki->initPage($title);
$txt = $article->get_text();
$txt = remove_tpl($txt,"يتيمة|Orphan|orphan");
$article->edit($txt,BootMsg."حذف قالب:يتيمة من مقالة تصل إليها ".$d['Nb']." مقالات/مقالة");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
ترشيح تصنيفات صيانة فارغة للحذف السريع
*/
function markEmptyCattoRemove(&$wiki,&$mysqli) {
global $months;
$query =<<<QUERY
SELECT distinct page_title, rev_timestamp , DATEDIFF(now(),rev_timestamp)
FROM categorylinks
RIGHT JOIN page
ON cl_to = page_title
JOIN revision
ON rev_page = page_id
WHERE page_namespace = 14
AND rev_parent_id = 0
AND cl_to IS NULL
AND page_title LIKE '%منذ%' #since
AND DATEDIFF(now(),rev_timestamp)> 45
QUERY;
cecho("\n\n[Running EmptyCat SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = "تصنيف:".str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage($title);
$txt = $article->get_text();
if(strpos($txt,"{{تصنيف غير مستخدم") !== false) { echo "\n\n"; continue; }
$txt = "{{تصنيف غير مستخدم|تاريخ="
.$months[date('n')]
." "
.date('Y')
."}}\n".$txt;
$article->edit($txt,BootMsg."ترشيح تصنيفات صيانة فارغة للحذف السريع");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
وسم تصنيفات غير مستخدمة بـ قالب {{قا|تصنيف غير مستخدم}}
*/
function markUnusedCat(&$wiki,&$mysqli) {
global $months;
$query =<<<QUERY
SELECT distinct page_title, str_to_date(rev_timestamp, '%Y%m%d%H%i%s') AS rev_timestamp
FROM categorylinks
RIGHT JOIN page
ON cl_to = page_title
JOIN revision
ON rev_page = page_id
WHERE page_namespace = 14
AND page_is_redirect = 0
AND rev_parent_id = 0
AND page_id NOT IN (SELECT tl_from FROM templatelinks WHERE tl_title = 'تحويل_تصنيف')
AND page_id NOT IN (SELECT tl_from FROM templatelinks WHERE tl_title = 'تصنيف_فارغ')
AND page_id NOT IN (SELECT tl_from FROM templatelinks WHERE tl_title = 'توضيح_تصنيف')
AND page_id NOT IN (SELECT tl_from FROM templatelinks WHERE tl_title = 'تصنيف_غير_مستخدم')
AND cl_to IS NULL
QUERY;
cecho("\n\n[Running EmptyCat SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = "تصنيف:".str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage($title);
$txt = $article->get_text();
if(strpos($txt,"{{تصنيف غير مستخدم") !== false) { echo "\n\n"; continue; }
$txt = "{{تصنيف غير مستخدم|تاريخ="
.$months[date('n')]
." "
.date('Y')
."}}\n".$txt;
$article->edit($txt,BootMsg."وسم تصنيف غير مستخدم");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
وسم مقالات يتيمة غير موسومة بقالب {{يتيمة}}
*/
function markOrphPages(&$wiki,&$mysqli) {
global $months;
$query =<<<QUERY
SELECT page_title
FROM page
LEFT JOIN pagelinks
ON pl_title = page_title
AND pl_namespace = page_namespace
WHERE pl_namespace IS NULL
AND page.page_namespace =0 AND page.page_is_redirect = 0
and page.page_id not in (select tl_from from templatelinks where tl_title = 'يتيمة')
and page.page_id not in (select tl_from from templatelinks where tl_title = 'توضيح')
LIMIT 1000;
QUERY;
cecho("\n\n[Running OrphanPage SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage($title);
if($article->get_exists() === false) continue;
$txt = $article->get_text();
if(strpos($txt,"{{يتيمة") !== false) continue;
$txt = "{{يتيمة|تاريخ="
.$months[date('n')]
." "
.date('Y')
."}}\n".$txt;
$article->edit($txt,BootMsg."وسم مقالة يتيمة غير موسومة");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
ملفات استعمال عادل غير مستخدمة. المطلوب: وسمها بقالب {{صورة استعمال عادل يتيمة}} حسب طريقة استخدام القالب.
*/
function markUnusedFiles(&$wiki,&$mysqli) {
global $months;
$query =<<<QUERY
select page_title
from page as p1
join image
on exists (select *
from categorylinks as cl1
where cl_from = page_id
and (cl_to = "جميع_الملفات_غير_الحرة"
or exists (select *
from page as p2
where p2.page_namespace = 14
and p2.page_title = cl1.cl_to
and exists (select *
from categorylinks as cl2
where cl2.cl_from = p2.page_id
and (cl2.cl_to = "جميع_الملفات_غير_الحرة"
or exists (select *
from page as p3
where p3.page_namespace = 14
and p3.page_title = cl2.cl_to
and exists (select *
from categorylinks as cl3
where cl3.cl_from = p3.page_id
and (cl3.cl_to ="جميع_الملفات_غير_الحرة"))))))))
and page_namespace = 6
and not exists (select *
from imagelinks
where il_to = page_title
and il_from_namespace in (0, 1, 2, 3, 4, 5, 11, 12, 100, 118))
and img_name = page_title
and datediff(now(), img_timestamp) > 7
and page_id not IN (SELECT tl_from FROM templatelinks where tl_title = 'صورة_استعمال_عادل_يتيمة') #Remove # to find untagged files
QUERY;
cecho("\n\n[Running FairFile SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage("ملف:".$title);
if($article->get_exists() === false) continue;
$txt = $article->get_text();
$txt = "{{صورة استعمال عادل يتيمة|1="
.date("d.m.Y")
."}}\n".$txt;
$article->edit($txt,BootMsg."وسم ملف استعمال عادل غير مستخدم");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
ملفات استعمال عادل مستخدمة وموسمة. المطلوب: إزالة الوسم السابق منها.
*/
function unmarkUsedFiles(&$wiki,&$mysqli) {
$query =<<<QUERY
SELECT p.page_title FROM page p
INNER JOIN categorylinks c1 ON p.page_id = c1.cl_from
LEFT JOIN imagelinks i ON p.page_title = i.il_to AND (i.il_from_namespace in (0, 1, 2, 3, 4, 5, 11, 12, 100, 118))
LEFT JOIN categorylinks c2 ON p.page_id = c2.cl_from AND c2.cl_to = "ملفات_غير_حرة_يتيمة"
LEFT JOIN redirect as r ON p.page_title = r.rd_title
WHERE c1.cl_to = "جميع_الملفات_غير_الحرة"
AND i.il_from IS NULL
AND c2.cl_from IS NULL
AND r.rd_from IS NULL
AND p.page_namespace = 6
QUERY;
cecho("\n\n[Running untag used FairFile SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage("ملف:".$title);
if($article->get_exists() === false) continue;
$txt = $article->get_text();
$txt = remove_tpl($txt,"صورة استعمال عادل يتيمة|صورة استعمال عادل غير مستخدمة|Db-badfairuse");
$article->edit($txt,BootMsg."إزالة وسم ملف استعمال عادل غير مستخدم");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
مقالات غير مصنفة. المطلوب: وسمها بقالب {{غير مصنفة}}.
*/
function markUnCatPages(&$wiki,&$mysqli) {global $months;
$query =<<<QUERY
SELECT page_title FROM page
LEFT JOIN categorylinks
ON cl_from = page_id
WHERE cl_from IS NULL
AND page_namespace = 0
AND page_is_redirect = 0
AND page_title NOT LIKE "الصفحة_الرئيسية"
QUERY;
cecho("\n\n[Running markUncat Page SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage($title);
$txt = $article->get_text();
$txt = "{{غير مصنفة|تاريخ="
.$months[date('n')]
." "
.date('Y')
."}}\n".$txt;
$bls = $article->get_backlinks(array( 0 ),'nonredirects');
if(count($bls)<3)
$txt = "{{يتيمة|تاريخ="
.$months[date('n')]
." "
.date('Y')
."}}\n".$txt;
$article->edit($txt,BootMsg."وسم مقالة غير مصنفة");
}
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
استخراج قوائم المقالات بعناوين بها تشكيل.
*/
function extractPagesList(&$wiki,&$mysqli) {
$query =<<<QUERY
SELECT page_title
FROM page
WHERE page_title REGEXP '(ّ|َ|ً|ُ|ٌ|ِ|ٍ|ْ)'
AND page_title NOT LIKE '%(كانا)%' #
AND page_namespace = 0
AND page_is_redirect = 0
QUERY;
cecho("\n\n[Running extractPagesList Page SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
$titles = array();
while($d = $result->fetch_assoc()) {
$titles[] = "\n# [[:".str_replace('_',' ',$d['page_title'])."]]";
}
$article = $wiki->initPage("ويكيبيديا:مشروع ويكي الصيانة/مقالات بعناوين مشكلة");
$txt= "{{مهام تحريرية}}\n"
."هذه قائمة بمقالات تحتوي عناوينها على [[علامة تشكيل|علامات تشكيل]] بما يُخالف [[ويكيبيديا:تسمية المقالات|سياسة تسمية المقالات]]. "
."المطلوب نقل المقالات إلى عناوين صحيحة لا تحتوي أي علامة تشكيل.";
$txt .= "\n<h4>آخر تحديث كان في {{تاريخ2|".date("Y-m-d")."|dmy}} ".date("H:i:s")." </h4>\n<hr>"
.'<div style = "-moz-column-count: 4;-moz-column-gap: 20px;-webkit-column-count: 4;-webkit-column-gap: 20px;column-count: 4;column-gap: 20px;">'
."\n".implode("",$titles)
.'</div>';
$article->edit($txt,BootMsg."استخراج قائمة المقالات بعناوين بها تشكيل");
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
استخراج قوائم التصنيفات غير المصنفة.
*/
function extractCatList(&$wiki,&$mysqli) {
$query =<<<QUERY
SELECT
distinct page_title,
page_len,
cat_pages,
rev_timestamp,
rev_user_text
FROM revision
JOIN
(SELECT
page_id,
page_title,
page_len,
cat_pages
FROM category
RIGHT JOIN page ON cat_title = page_title
LEFT JOIN categorylinks ON page_id = cl_from
WHERE cl_from IS NULL
AND page_namespace = 14
AND page_is_redirect = 0) AS pagetmp
ON rev_page = pagetmp.page_id
AND rev_timestamp = (SELECT MAX(rev_timestamp)
FROM revision AS last
WHERE last.rev_page = pagetmp.page_id);
QUERY;
cecho("\n\n[Running extractCatList Page SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
$titles = array();
while($d = $result->fetch_assoc()) {
$titles[] = "\n# [[:تصنيف:".str_replace('_',' ',$d['page_title'])."]]";
}
$article = $wiki->initPage("ويكيبيديا:مشروع ويكي الصيانة/التصنيفات غير المصنفة");
$txt = "\n<h4>آخر تحديث كان في {{تاريخ2|".date("Y-m-d")."|dmy}} ".date("H:i:s")." </h4>\n<hr>"
.'<div style = "-moz-column-count: 4;-moz-column-gap: 20px;-webkit-column-count: 4;-webkit-column-gap: 20px;column-count: 4;column-gap: 20px;">'
."\n".implode("",$titles)
.'</div>';
$article->edit($txt,BootMsg."استخراج قائمة التصنيفات غير المصنفة");
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*
استخراج قوائم لبوت الأرشفة الآلية
*/
function extractLongUserTalkPages(&$wiki,&$mysqli) {
$query =<<<QUERY
select
page_title,
page_len
from page
where
page_namespace = 3 and
page_title not like "%/%" and
page_len >100000
ORDER BY page_len
DESC limit 100;
QUERY;
if ($result = $mysqli->query($query)) {
$titles = array();
while($d = $result->fetch_assoc()) {
$titles[] = sprintf("\n# [[نقاش المستخدم:%s]] (%d حرف)" ,str_replace('_',' ',$d['page_title']),$d['page_len']);
}
$article = $wiki->initPage("ويكيبيديا:مشروع ويكي الصيانة/أكبر صفحات نقاش المستخدمين");
$txt = "\n<h4>آخر تحديث كان في {{تاريخ2|".date("Y-m-d")."|dmy}} ".date("H:i:s")." </h4>\n<hr>"
.'<div style = "-moz-column-count: 4;-moz-column-gap: 20px;-webkit-column-count: 4;-webkit-column-gap: 20px;column-count: 4;column-gap: 20px;">'
."\n".implode("",$titles)
.'</div>';
$article->edit($txt,BootMsg."استخراج قائمة أكبر صفحات نقاش المستخدمين");
$result->free();
}
else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*****************************************************************************************************/
/*
استخراج قوائم لصفحات النقاش اليتيمة
*/
function extractOrphanedTalkPages(&$wiki,&$mysqli) {
$query =<<<QUERY
SELECT
p1.page_title,p1.page_namespace
FROM page AS p1
WHERE
p1.page_title NOT LIKE '%/%'
and p1.page_is_redirect = 0
and p1.page_namespace in (1,5,11,13,15,101,447,829,2301,2303 )
AND NOT EXISTS (SELECT 1
FROM page AS p2
WHERE p2.page_namespace = p1.page_namespace - 1
AND p1.page_title = p2.page_title)
QUERY;
$nstitles = array(
//"ns-0"=>"(مقالات)",
"ns-1"=>"نقاش",
"ns-2"=>"مستخدم",
"ns-3"=>"نقاش المستخدم",
"ns-4"=>"ويكيبيديا",
"ns-5"=>"نقاش ويكيبيديا",
"ns-6"=>"ملف",
"ns-7"=>"نقاش الملف",
"ns-8"=>"ميدياويكي",
"ns-9"=>"نقاش ميدياويكي",
"ns-10"=>"قالب",
"ns-11"=>"نقاش القالب",
"ns-12"=>"مساعدة",
"ns-13"=>"نقاش المساعدة",
"ns-14"=>"تصنيف",
"ns-15"=>"نقاش التصنيف",
"ns-100"=>"بوابة",
"ns-101"=>"نقاش البوابة",
"ns-446"=>"برنامج التعليم",
"ns-447"=>"نقاش برنامج التعليم",
"ns-828"=>"وحدة",
"ns-829"=>"نقاش الوحدة",
"ns-2300"=>"إضافة",
"ns-2301"=>"نقاش الإضافة",
"ns-2302"=>"تعريف الإضافة",
"ns-2303"=>"نقاش تعريف الإضافة",
"ns-2600"=>"موضوع",
);
cecho("\n\n[Running extractOrphanedTalkPages SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
$titles = array();
while($d = $result->fetch_assoc()) {
$titles[] = "\n# [[:".$nstitles['ns-'.$d['page_namespace']].":".str_replace('_',' ',$d['page_title'])."]]";
}
$article = $wiki->initPage("ويكيبيديا:مشروع ويكي الصيانة/صفحات نقاش يتيمة");
$txt = "\n<h4>آخر تحديث كان في {{تاريخ2|".date("Y-m-d")."|dmy}} ".date("H:i:s")." </h4>\n<hr>"
.'<div style = "-moz-column-count: 2;-moz-column-gap: 20px;-webkit-column-count: 2;-webkit-column-gap: 20px;column-count: 2;column-gap: 20px;">'
."\n".implode("",$titles)
.'</div>';
$article->edit($txt,BootMsg."استخراج قائمة صفحات النقاش يتيمة");
$result->free();
} else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*****************************************************************************************************/
/*
حذف : [[تصنيف:أشخاص على قيد الحياة]] لشخص متوف
*/
function removeDeadsFromLivingPeopleCat(&$wiki,&$mysqli) {
$query =<<<QUERY
select
page.page_title
from page
where page_namespace = 0
and page_id in (select cl_from from categorylinks where cl_to = 'أشخاص_على_قيد_الحياة')
and page_id in (select cl_from from categorylinks where cl_to like 'وفيات_%')
and page_is_redirect = 0
QUERY;
cecho("\n\n[remove Deads From Living People Cat SQL : |INFO] \n $query \n\n");
if ($result = $mysqli->query($query)) {
while($d = $result->fetch_assoc()) {
$title = str_replace('_',' ',$d['page_title']);
echo "\n\t >>> * $title \n";
$article = $wiki->initPage($title);
$texte = $article->get_text();
$texte = str_replace("\n[[تصنيف:أشخاص على قيد الحياة]]","",$texte);
$comment = "حذف : [[تصنيف:أشخاص على قيد الحياة]] لشخص متوف";
$article->edit($texte,$comment);
}
$result->free();
} else {cecho("\n[SQL ERROR : $query |ERROR]"); }
}
/*****************************************************************************************************/
$wiki = Peachy::newWiki(null,
/*Username*/ 'BotName'
, /*password*/ 'BotPassword'
, 'https://ar.wiki.x.io/w/api.php',);
$user='put_sql_username';
$password='put_sql_pasword';
$mysqli =new mysqli('arwiki.labsdb',$user,$password,'arwiki_p');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(in_array(1,$argv)) { removeTPLs($wiki);}
if(in_array(2,$argv)) { removeUnCatFromCatPages($wiki,$mysqli);}
if(in_array(3,$argv)) { unmarkUnorphPage($wiki,$mysqli);}
if(in_array(4,$argv)) { markEmptyCattoRemove($wiki,$mysqli); }
if(in_array(5,$argv)) { markUnusedCat($wiki,$mysqli); }
if(in_array(6,$argv)) { markOrphPages($wiki,$mysqli); }
if(in_array(7,$argv)) { markUnusedFiles($wiki,$mysqli); }
if(in_array(8,$argv)) { unmarkUsedFiles($wiki,$mysqli); }
if(in_array(9,$argv)) { markUnCatPages($wiki,$mysqli); }
if(in_array(10,$argv)) { extractPagesList($wiki,$mysqli); }
if(in_array(11,$argv)) { extractCatList($wiki,$mysqli); }
if(in_array(12,$argv)) { extractLongUserTalkPages($wiki,$mysqli); }
if(in_array(13,$argv)) { extractOrphanedTalkPages($wiki,$mysqli); }
if(in_array(14,$argv)) { removeDeadsFromLivingPeopleCat($wiki,$mysqli); }
$mysqli->close();
/*****************************************************************************************************/