Решена проблема вывода определенных полей только зарегистрированным пользователям, т.е. в поле чекбокс, и если он установлен, то данное поле будет отображаться только зарегистрированным пользователям.
К примеру, оптовая цена может выводиться только для диллеров, или же прикрепленный файл виден только зарегистрированным пользователям (диллерам).
Тестировалось на AdsManager 2.5 RC2
После внесения изменений (см. ниже) в редактировании и создании новых полей появляется возможность
1. Создается в базе столбец
reguser с типом
INT в таблице
adsmanager_fields2. В коде admin.adsmanager.html.php в функции editfield после строк
<tr>
<td width="20%"><?php echo ADSMANAGER_FIELD_TYPE;?></td>
<td width="20%"><?php echo $lists['type']; ?></td>
<td> </td>
</tr>
вставляем
<tr>
<td width="20%">Reg users?:</td>
<td align=left width="20%"><input type="checkbox" name="reguser" <?php if($row->reguser==1) {?>checked <?php } ?>value="1" /></td>
<td> </td>
</tr>
3. В файле adsmanager.class.php добавляется в класс adsManagerField
4. В файле adsmanager.html.php замените функцию showFieldValue на приведенную ниже:
function showFieldValue($row,$field,$field_values,$email_display,$option,$itemid,$mode,$plugins)
{
global $mosConfig_live_site,$mosConfig_absolute_path, $my;
if($my->id==0 && $field->reguser!=1) {
if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
if (($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
echo adsmanager_html::getLangDefinition($field->title).": ";
}
if ($field->title)
$name = $field->name;
$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ": ".ADSMANAGER_YES."<br />";
else
echo ": ".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;
case 'multicheckbox':
case 'multicheckboximage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}
break;
case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;
case 'date':
$return = $value;
echo $return;
break;
case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;
case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;
case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&page=show_message_form&mode=0&adid=".$row->id."&Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;
}
}
break;
case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;
case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);
echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;
default:
if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}
break;
}
}
}
else if($my->id) {
if ((strpos($field->catsid, ",$row->catid,")!== false)||(strpos($field->catsid, ",-1,")!== false))
{
if (($field->type != 'checkbox')&&(($field->display_title & $mode) == $mode))
{
echo adsmanager_html::getLangDefinition($field->title).": ";
}
if ($field->title)
$name = $field->name;
$value = "";
$value = "\$row->".$field->name;
eval("if (isset($value)) \$value = \"$value\";");
$value = adsmanager_html::getLangDefinition($value);
switch($field->type)
{
case 'checkbox':
if (($field->display_title & $mode) == $mode)
{
echo adsmanager_html::getLangDefinition($field->title);
if ($value == 1)
echo ": ".ADSMANAGER_YES."<br />";
else
echo ": ".ADSMANAGER_NO."<br />";
}
else if ($value == 1)
{
echo adsmanager_html::getLangDefinition($field->title)."<br />";
}
break;
case 'multicheckbox':
case 'multicheckboximage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if (strpos($value, $fieldvalue)!== false)
{
if ($field->type == 'multicheckbox')
$return = adsmanager_html::getLangDefinition($fieldtitle);
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return."<br />";
}
}
break;
case 'url':
if ((isset($field->link_text))&&($field->link_text != ""))
$linkObj = $field->link_text;
else if ((isset($field->link_image))&&(file_exists($mosConfig_absolute_path."/images/com_adsmanager/fields/".$field->link_image)))
$linkObj = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$field->link_image."' />";
else
{
$linkObj = $value;
}
if ($value != "")
{
$return = "<a href='http://$value' target='_blank'>$linkObj</a>";
}
echo $return;
break;
case 'date':
$return = $value;
echo $return;
break;
case 'select':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if ($value == $v->fieldvalue)
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;
case 'multiselect':
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
if (strpos($value, ",".$v->fieldvalue.",") === false)
{
}
else
{
echo adsmanager_html::getLangDefinition($v->fieldtitle)."<br />";
}
}
}
break;
case 'emailaddress':
if ($value != "")
{
switch($email_display) {
case 2:
$emailForm = sefRelToAbs("index.php?option=$option&page=show_message_form&mode=0&adid=".$row->id."&Itemid=".$itemid);
echo '<a href="'.$emailForm.'">'.ADSMANAGER_EMAIL_FORM.'</a><br />';
break;
case 1:
echo adsmanager_html::Txt2Png($value,$option);
break;
default:
echo ADSMANAGER_FORM_EMAIL.": <a href='mailto:".$value."'>".adsmanager_html::cutLongWord($value)."</a>";
break;
}
}
break;
case 'textarea':
echo adsmanager_html::cutLongWord(str_replace(array("\r\n", "\n", "\r"), "<br />", $value))."<br />";
break;
case 'editor':
case 'number':
case 'text':
echo adsmanager_html::cutLongWord($value)."<br />";
break;
case 'price':
if ($value != "")
echo sprintf(ADSMANAGER_DEVICE,$value);
echo "<br />";
break;
case 'radio':
case 'radioimage':
for($i=0,$nb=count($field_values[$field->fieldid]);$i < $nb ;$i++)
{
$fieldvalue = @$field_values[$field->fieldid][$i]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$i]->fieldtitle;
if ($value == $fieldvalue)
{
if ($field->type == 'radio')
$return = $fieldtitle;
else
$return = "<img src='".$mosConfig_live_site."/images/com_adsmanager/fields/".$fieldtitle."' alt='$fieldtitle' />";
echo $return;
}
}
break;
case 'file':
if ($value != "")
{
echo "<a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a></b>";
echo "<br />";
}
break;
default:
if (isset($plugins[$field->type]))
{
if ($mode == 1)
$return = $plugins[$field->type]->getListDisplay($row->id,$field );
else
$return = $plugins[$field->type]->getDetailsDisplay($row->id,$field );
echo $return;
}
break;
}
}
}
}