MyBB Community Forums

Full Version: My Ad Manager Plugin PHP 7.3 Problem ?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
[Image: Ekran-Al-nt-s.png]

Hello
The plugin has such an error in php 7.3 version. Can we update according to php 7.3, is there any help?

<?php
/**
 * My Ad Manager Plugin
 * Copyright 2008 Jesse Labrocca
 *
 * Website: http://www.mybbcentral.com
 * License: http://www.mybbcentral.com/license.php
 * TR Ceviri: XpSerkan - http://www.mybb.com.tr/
 *
 * my_ad_manager.php
 */
 
// Disallow direct access to this file for security reasons
if(!defined("IN_MYBB"))
{
	die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("postbit","myads_inline");
$plugins->add_hook("pre_output_page", "myads");


function my_ad_manager_info()
{
	return array(
		"name"			=> "Gelişmiş Reklam Yöneticisi Plugin",
		"description"	=> "Forumunuza 4 farklı alanda reklam eklemenize olanak sağlar. (header, headerinclude, navigasyon, footer, konu gösterim)<br /><img src=\"http://destek.mybb.com.tr/turkey.gif\" border=\"0\" alt=\"MCTR\" title=\"MCTR\" /> Türkçe Çeviri: <a title=\"MyBB.Com.TR - XpSerkan\" href=\"http://www.mybb.com.tr\" target=\"_blank\"><b>MyBB.Com.TR</b></a>",
		"website"		=> "http://www.mybb.com.tr",
		"author"		=> "Jesse Labrocca",
		"authorsite"	=> "http://www.mybb.com.tr",
		"version"		=> "1.1.5",
		"compatibility" => "18*"
	);
}


function my_ad_manager_activate()
{
	global $mybb, $db;

    $my_ad_manager_group = array(
        "gid" => "NULL",
        "name" => "myadmanager",
        "title" => "Gelişmiş Reklam Yöneticisi Ayarları",
        "description" => "Gelişmiş reklam yöneticisi ayarlarını bu kısımda yapabilirsiniz.",
        "disporder" => "30",
        "isdefault" => "no",
        );
    $db->insert_query("settinggroups", $my_ad_manager_group);
    $gid = $db->insert_id();


    $setting_1 = array(
        "sid" => "NULL",
        "name" => "inlineadenable",
        "title" => "Konu Gösterim Reklamı Aktif Edilsin mi?",
        "description" => "Konu gösterimlerinde reklamların gösterilmesi istiyor musunuz?",
        "optionscode" => "onoff",
        "value" => "0",
        "disporder" => "1",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_1);

    $setting_2 = array(
        "sid" => "NULL",
        "name" => "inlinead",
        "title" => "Konu Gösterim Reklam Kodu",
        "description" => "Konu gösterimlerinde çıkmasını istediğiniz reklam kodlarını aşağıdaki metin kutusuna ekleyiniz. <b>Not:</b> HTML kod kullanabilirsiniz.",
        "optionscode" => "textarea",
        "value" => "",
        "disporder" => "2",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_2);

    $setting_3 = array(
        "sid" => "NULL",
        "name" => "inadexemptg",
        "title" => "Reklamların Gösterilmeyeceği Kullanıcı Grupları?",
        "description" => "Reklamların gösterilmesini istemediğiniz kullanıcı gruplarının <b>ID</b> nolarını <b>Virgül</b> ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "3",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_3);

    $setting_4 = array(
        "sid" => "NULL",
        "name" => "inadexemptf",
        "title" => "Reklamlar Hangi Forumlarda Gösterilmesin?",
        "description" => "Reklamların gösterilmesini istemediğiniz forum <b>ID</b> nolarını <b>Virgül</b> ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "4",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_4);

    $setting_5 = array(
        "sid" => "NULL",
        "name" => "inadmode",
        "title" => "Konu Gösterim Reklam Metodu",
        "description" => "Reklamların görünüm şeklini aşağıdan ayarlayabilirsiniz.",
        "optionscode" => "radio\r\n1=Sadece ilk mesajdan sonra göster?\r\n2=Sadece ilk mesajdan ve her x mesajdan sonra göster? (varsayılan)\r\n3=Her x mesajdan sonra göster?",
        "value" => "2",
        "disporder" => "5",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_5);

    $setting_6 = array(
        "sid" => "NULL",
        "name" => "inadpostnum",
        "title" => "Reklamlar Kaç Mesajda Bir Tekrar Etsin?",
        "description" => "Reklamların kaç mesajda bir görüntülenmesini istiyorsunuz? <b>Not:</b>(Sadece üsteki 2.ci seçenekte bu ayarı kullanabilirsiniz.)",
        "optionscode" => "text",
        "value" => "5",
        "disporder" => "6",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_6);

    $setting_7 = array(
        "sid" => "NULL",
        "name" => "headadenable",
        "title" => "Header Reklamı Aktif Edilsin mi?",
        "description" => "Forumun en üstü, header kısmında reklam gösterilsin mi?",
        "optionscode" => "onoff",
        "value" => "0",
        "disporder" => "7",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_7);

    $setting_8 = array(
        "sid" => "NULL",
        "name" => "headad",
        "title" => "Header Reklam Kodu",
        "description" => "Forumun en üstü, Headerda çıkmasını istediğiniz reklam kodlarını aşağıdaki metin kutusuna ekleyiniz. <b>Not:</b> HTML kod kullanabilirsiniz.",
        "optionscode" => "textarea",
        "value" => "",
        "disporder" => "8",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_8);

    $setting_9 = array(
        "sid" => "NULL",
        "name" => "hadexemptg",
        "title" => "Header Reklamlarının Gösterilmeyeceği Gruplar?",
        "description" => "Header reklamlarının gösterilmesini istemediğiniz kullanıcı gruplarının <b>ID</b> nolarını <b>Virgül</b> ile ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "9",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_9);

    $setting_10 = array(
        "sid" => "NULL",
        "name" => "hadexemptf",
        "title" => "Header Reklamlarının Gösterilmeyeceği Forumlar?",
        "description" => "Header reklamlarının gösterilmesini istemediğiniz forumların <b>ID</b> nolarını <b>Virgül</b> ile ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "10",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_10);

    $setting_11 = array(
        "sid" => "NULL",
        "name" => "topadenable",
        "title" => "Navigasyon Reklamı Aktif Edilsin mi?",
        "description" => "Navbarın hemen altında reklam gösterilsin mi?",
        "optionscode" => "onoff",
        "value" => "0",
        "disporder" => "11",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_11);

    $setting_12 = array(
        "sid" => "NULL",
        "name" => "topad",
        "title" => "Navigasyon Reklam Kodu",
        "description" => "Navbarın hemen altında çıkmasını istediğiniz reklam kodlarını aşağıdaki metin kutusuna ekleyiniz. <b>Not:</b> HTML kod kullanabilirsiniz.",
        "optionscode" => "textarea",
        "value" => "",
        "disporder" => "12",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_12);

    $setting_13 = array(
        "sid" => "NULL",
        "name" => "tadexemptg",
        "title" => "Navigasyon Reklamlarının Gösterilmeyeceği Gruplar?",
        "description" => "Navigasyon reklamlarının gösterilmesini istemediğiniz kullanıcı gruplarının <b>ID</b> nolarını <b>Virgül</b> ile ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "13",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_13);

    $setting_14 = array(
        "sid" => "NULL",
        "name" => "tadexemptf",
        "title" => "Navigasyon Reklamlarının Gösterilmeyeceği Forumlar?",
        "description" => "Navigasyon reklamlarının gösterilmesini istemediğiniz forumların <b>ID</b> nolarını <b>Virgül</b> ile ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "14",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_14);

    $setting_15 = array(
        "sid" => "NULL",
        "name" => "footadenable",
        "title" => "Footer Reklamı Aktif Edilsin mi?",
        "description" => "Forumun alt kısmı footerda reklam gösterilsin mi?",
        "optionscode" => "onoff",
        "value" => "0",
        "disporder" => "15",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_15);

    $setting_16 = array(
        "sid" => "NULL",
        "name" => "footad",
        "title" => "Footer Reklam Kodu",
        "description" => "Footerda çıkmasını istediğiniz reklam kodlarını aşağıdaki metin kutusuna ekleyiniz. <b>Not:</b> HTML kod kullanabilirsiniz.",
        "optionscode" => "textarea",
        "value" => "",
        "disporder" => "16",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_16);

    $setting_17 = array(
        "sid" => "NULL",
        "name" => "fadexemptg",
        "title" => "Footer Reklamlarının Gösterilmeyeceği Gruplar?",
        "description" => "Footer reklamlarının gösterilmesini istemediğiniz kullanıcı gruplarının <b>ID</b> nolarını <b>Virgül</b> ile ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "17",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_17);

    $setting_18 = array(
        "sid" => "NULL",
        "name" => "fadexemptf",
        "title" => "Footer Reklamlarının Gösterilmeyeceği Forumlar?",
        "description" => "Footer reklamlarının gösterilmesini istemediğiniz forumların <b>ID</b> nolarını <b>Virgül</b> ile ayırarak giriniz.",
        "optionscode" => "text",
        "value" => "0",
        "disporder" => "18",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $setting_18);

	rebuild_settings();


	require MYBB_ROOT.'/inc/adminfunctions_templates.php';

	find_append_templatesets("postbit", "{\$post[inline_ad]}");
	find_append_templatesets("postbit_classic", "{\$post[inline_ad]}");

}


function my_ad_manager_is_installed()
  {
 		global $db,$mybb;
 		if(array($mybb->settings['inlineadenable']))
   	{
   		return true;
 		}
 		return false;
}


function my_ad_manager_deactivate()
{

	global $mybb, $db;

    require "../inc/adminfunctions_templates.php";
	find_replace_templatesets("postbit", '#'.preg_quote('{$post[inline_ad]}').'#', '',0);
	find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[inline_ad]}').'#', '',0);


    $query = $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='myadmanager'");
    $g = $db->fetch_array($query);
    $db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='".$g['gid']."'");
    $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='".$g['gid']."'");

	rebuild_settings();
}



function myads_inline(&$post)
{

global $mybb, $db, $postcounter, $fid;


 if($mybb->settings['inlineadenable'])
 {

	$gexempt = explode(",",$mybb->settings['inadexemptg']);
	$fexempt = explode(",",$mybb->settings['inadexemptf']);

	 if ( (in_array($mybb->user['usergroup'],$gexempt)) || (in_array($fid,$fexempt)) )
		{

	   return $post;
		}


	switch ($mybb->settings['inadmode'])
	{
	case 1:
        if (($postcounter - 1) % $mybb->settings['postsperpage'] == "0") {
		$ad = true;
		}
    break;

	case 2:
        if ($postcounter == "1" || ($postcounter - 1) % ($mybb->settings['inadpostnum']) == "0") {
		$ad = true;
		}
    break;

	case 3:
        if ($postcounter % ($mybb->settings['inadpostnum']) == "0") {
		$ad = true;
		}
    break;
	}

	if($ad){
		$post[inline_ad] = "<div align=\"center\" class=\"inlinead\">".$mybb->settings['inlinead']."</div>";
	}

   
 }

   return $post;
 
}


function myads($page)
{

global $mybb, $db, $fid;


	if($mybb->settings['headadenable'])
	{

	$gexempt = explode(",",$mybb->settings['hadexemptg']);
	$fexempt = explode(",",$mybb->settings['hadexemptf']);

	 if ( (!in_array($mybb->user['usergroup'],$gexempt)) && (!in_array($fid,$fexempt)) )
		{	
		$page = preg_replace('#'.preg_quote('<!-- end: headerinclude -->').'#', $mybb->settings['headad'] ."
<!-- end: headerinclude -->", $page);

		}
	}

	if($mybb->settings['topadenable'])
	{


	$gexempt = explode(",",$mybb->settings['tadexemptg']);
	$fexempt = explode(",",$mybb->settings['tadexemptf']);

	 if ( (!in_array($mybb->user['usergroup'],$gexempt)) && (!in_array($fid,$fexempt)) )
		{

		$page = preg_replace('#'.preg_quote('<!-- end: header -->').'#', "<div class=\"headerad\" align=\"center\">". $mybb->settings['topad'] ."</div><!-- end: header -->", $page);

		}

	}

	if($mybb->settings['footadenable'])
	{

	$gexempt = explode(",",$mybb->settings['fadexemptg']);
	$fexempt = explode(",",$mybb->settings['fadexemptf']);

	 if ( (!in_array($mybb->user['usergroup'],$gexempt)) && (!in_array($fid,$fexempt)) )
		{

		$page = preg_replace('#'.preg_quote('<!-- start: footer -->').'#', "<!-- start: footer --><div class=\"footerad\" align=\"center\">". $mybb->settings['footad'] ."</div>", $page);

		}	
		
	}

	return $page;

}

function find_append_templatesets($title, $append, $autocreate=1)
{
	global $db;
	if($autocreate != 0)
	{
		$query = $db->simple_select("templates", "*", "title='$title' AND sid='-2'");
		$master = $db->fetch_array($query);
		$oldmaster = $master['template'];
		$master['template'] = $master['template'] . $append;
		if($oldmaster == $master['template'])
		{
			return false;
		}
		$master['template'] = $db->escape_string($master['template']);
	}
	$query = $db->query("
		SELECT s.sid, t.template, t.tid 
		FROM ".TABLE_PREFIX."templatesets s 
		LEFT JOIN ".TABLE_PREFIX."templates t ON (t.title='$title' AND t.sid=s.sid)
	");
	while($template = $db->fetch_array($query))
	{
		if($template['template']) // Custom template exists for this group
		{
			if(!$template['template'])
			{
				return false;
			}
			$newtemplate = $template['template'] . $append;
			$template['template'] = $newtemplate;
			$update[] = $template;
		}
		elseif($autocreate != 0) // No template exists, create it based off master
		{
			$newtemp = array(
				"title" => $title,
				"template" => $master['template'],
				"sid" => $template['sid']
			);
			$db->insert_query("templates", $newtemp);
		}
	}
	
	if(is_array($update))
	{
		foreach($update as $template)
		{
			$updatetemp = array("template" => $db->escape_string($template['template']), "dateline" => TIME_NOW);
			$db->update_query("templates", $updatetemp, "tid='".$template['tid']."'");
		}
	}
	return true;
}
// Turkce Ceviri: XpSerkan - http://www.mybb.com.tr/
?>
There are lines in which the array indexes are not protected:
find_append_templatesets("postbit", "{\$post[inline_ad]}");
find_append_templatesets("postbit_classic", "{\$post[inline_ad]}");
...
find_replace_templatesets("postbit", '#'.preg_quote('{$post[inline_ad]}').'#', '',0);
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[inline_ad]}').'#', '',0);
...
$post[inline_ad] = "<div align=\"center\" class=\"inlinead\">".$mybb->settings['inlinead']."</div>";
Must become:
find_append_templatesets("postbit", "{\$post['inline_ad']}");
find_append_templatesets("postbit_classic", "{\$post['inline_ad']}");
...
find_replace_templatesets("postbit", '#'.preg_quote('{$post[\'inline_ad\']}').'#', '',0);
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[\'inline_ad\']}').'#', '',0);
...
$post['inline_ad'] = "<div align=\"center\" class=\"inlinead\">".$mybb->settings['inlinead']."</div>";
(2021-04-07, 09:26 PM)Crazycat Wrote: [ -> ]There are lines in which the array indexes are not protected:
find_append_templatesets("postbit", "{\$post[inline_ad]}");
find_append_templatesets("postbit_classic", "{\$post[inline_ad]}");
...
find_replace_templatesets("postbit", '#'.preg_quote('{$post[inline_ad]}').'#', '',0);
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[inline_ad]}').'#', '',0);
...
$post[inline_ad] = "<div align=\"center\" class=\"inlinead\">".$mybb->settings['inlinead']."</div>";
Must become:
find_append_templatesets("postbit", "{\$post['inline_ad']}");
find_append_templatesets("postbit_classic", "{\$post['inline_ad']}");
...
find_replace_templatesets("postbit", '#'.preg_quote('{$post[\'inline_ad\']}').'#', '',0);
find_replace_templatesets("postbit_classic", '#'.preg_quote('{$post[\'inline_ad\']}').'#', '',0);
...
$post['inline_ad'] = "<div align=\"center\" class=\"inlinead\">".$mybb->settings['inlinead']."</div>";


What do I need to change? They both look the same.

Can you change the code and share it.
(2021-04-07, 10:16 PM)arhavili Wrote: [ -> ]What do I need to change? They both look the same.

Can you change the code and share it.

for me they are totally different ...
https://www.diffchecker.com/AshNhRDH
Thanks martec Smile
Thank you very much Smile