| NordWest |
Отправлено: 11 ноября 2012 — 23:26 • Тема: Этапы разработки CMS Limbo • Форум: Limbo CMS |
Ответов: 115 Просмотров: 41458
 |
Ошибка при удалении раздела. Связанные с этим разделом категории и статьи повисают в воздухе.
Решил эту проблему через запрет удалять раздел, пока в нем есть категории. Возможно нужно потом будет ещё всплывающее окно с пояснением прикрутить...
Следующий косяк - при удалении статей... В админке главной страницы повисают мертвые ссылки.  |
| NordWest |
Отправлено: 11 ноября 2012 — 22:55 • Тема: История изменений... • Форум: Limbo CMS |
Ответов: 40 Просмотров: 28468
 |
class_easydb.php
было
code:foreach($cid as $var)
{
if($this->is_published($table,$var,$extra)) // если опубликовано
{$this->auto_category($table,$var,-1);} // уменьшаем счетчик
$conn->Execute("DELETE FROM #__$table WHERE id = $var $extra"); // удаляем запись в базе
}
стало
code: foreach($cid as $var)
{
if ($table == 'sections')
{
$cnd=$conn->GetRow("SELECT count FROM #__$table WHERE id = ".$var);
if ($cnd['count'] == 0)
{$conn->Execute("DELETE FROM #__$table WHERE id = $var $extra");}
}
else
{
if($this->is_published($table,$var,$extra)) // если опубликовано
{$this->auto_category($table,$var,-1);} // уменьшаем счетчик
$conn->Execute("DELETE FROM #__$table WHERE id = $var $extra"); // удаляем запись в базе
}
}
Причина - необходимо было запретить удалять разделы, в которых ещё есть категории. |
| NordWest |
Отправлено: 11 ноября 2012 — 04:48 • Тема: Попытка запустить репозитарий • Форум: Limbo CMS |
Ответов: 9 Просмотров: 3482
 |
Пришел к необходимости изменить структуру в xml файлах.
Теперь заголовок должен иметь такой формат:
code:
<name> banners </name>
<title> Banners </title>
<description> Banners rotation </description>
<version> 1.0.5.121106 </version>
<author> Vikas Patial </author>
<authorEmail> radius@maxdsl.ru </authorEmail>
<copyright>This component is released under the GNU/GPL License</copyright>
В этой связи придется прилично код ядра править, переписывать заголовки всех компонентов и перезаливать их на хост.
А ещё придется для корректной работы ссылки "Инфо" писать функцию самому. Та, что есть под мои нужды не подходит...
Вот я и думаю - может ну её пока нафиг? Будет потом нечем заняться, тогда и допилю. А пока проще добавить информацию из содержимого тега <description>. |
| NordWest |
Отправлено: 11 ноября 2012 — 04:25 • Тема: История изменений... • Форум: Limbo CMS |
Ответов: 40 Просмотров: 28468
 |
admin.system.php
было (Показать)case "install" :
{
switch ($tab_num)
{
case '1': $limbocore->redir('admin.php?com_option=templates&task=new&web_path='.$cid[0]);break;
case '2': $limbocore->redir('admin.php?com_option=language&task=new&web_path='.$cid[0]);break;
case '3': $limbocore->redir('admin.php?com_option=components&task=new&web_path='.$cid[0]);break;
case '4': $limbocore->redir('admin.php?com_option=modules&task=new&web_path='.$cid[0]);break;
case '5': $limbocore->redir('admin.php?com_option=system&option=hacks&web_path='.$cid[0]);break;
}
break;
}
default :new_updates(); break;
}
break;
}
стало (Показать)case "install" :
{
if( $cid[0] == '' )
{
?><script type="text/javascript"> var desc='<?php echo _IFC_LIST_ERR;?>'; alert(desc); </script> <?php
$limbocore->redir('admin.php?com_option=system&option=updates');
}
switch ($tab_num)
{
case '1': $limbocore->redir('admin.php?com_option=templates&task=new&web_path='.$lm_updates.'templates/'.$cid[0].'/tem_'.$cid[0].'.zip');break;
case '2': $limbocore->redir('admin.php?com_option=language&task=new&web_path='.$lm_updates.'lang/'.$cid[0].'/lng_'.$cid[0].'.zip');break;
case '3': $limbocore->redir('admin.php?com_option=components&task=new&web_path='.$lm_updates.'components/'.$cid[0].'/com_'.$cid[0].'.zip');break;
case '4': $limbocore->redir('admin.php?com_option=modules&option=install&task=new&web_path='.$lm_updates.'modules/'.$cid[0].'/mod_'.$cid[0].'.zip');break;
case '5': $limbocore->redir('admin.php?com_option=limbots&option=install&task=new&web_path='.$lm_updates.'limbots/'.$cid[0].'/bot_'.$cid[0].'.zip');break;
case '6': $limbocore->redir('admin.php?com_option=system&option=hacks&web_path='.$lm_updates.'hacks/'.$cid[0].'/hac_'.$cid[0].'.zip');break;
}
break;
}
admin.system.html.php
было (Показать)$table_head = array (
array('title'=>'radio' , 'val'=>'id' , 'len'=>'1%' ) ,
array('title'=>_CMN_NAME,'val'=>'name','len'=>'50%','info'=>_CMN_INFO,'ilink'=>'admin.php?com_option=language&task=info&cid[]=ivar1','ivar1'=>'id' ) ,
array('title'=>_CMN_STATUS,'val'=>'published','len'=>'10%','align'=>'center' ),
array('title'=>_CMN_AUTHOR,'val'=>'author','len'=>'15%','mlink'=>'authorEmail' ) ,
array('title'=>_CMN_VER,'val'=>'version','len'=>'10%','align'=>'center' ) ,
array('title'=>_CMN_CREATED,'Created','val'=>'date','len'=>'10%','align'=>'center' ),
array('title'=>_CMN_SIZE,'Size','val'=>'size','len'=>'10%','align'=>'center' )
);
$table_req = array ( 'id'=>'id','name'=>'name','published'=>'published','author'=>'author','version'=>'version','date'=>'date','authorEmail'=>'authorEmail','size'=>'size' );
$gui->add("tab",_TEMPLATES,_TEMPLATES_INSTALL,"dtab");
стало (Показать) $table_head = array (
array('title'=>'radio' , 'val'=>'name' , 'len'=>'1%'),
array('title'=>_CMN_NAME,'val'=>'title','len'=>'30%','info'=>_CMN_INFO,'ilink'=>'admin.php?com_option=system&option=info&task=ivar1&cid[]=ivar2'.'','ivar1'=>'id','ivar2'=>'name'),
array('title'=>_CMN_TITLE,'val'=>'description','len'=>'30%'),
array('title'=>_CMN_STATUS,'val'=>'published','len'=>'10%','align'=>'center'),
array('title'=>_CMN_AUTHOR,'val'=>'author','len'=>'15%','mlink'=>'authorEmail','align'=>'center'),
array('title'=>_CMN_VER,'val'=>'version','len'=>'10%','align'=>'center')
);
$table_req = array ( 'id'=>'id','name'=>'name','title'=>'title','description'=>'description','published'=>'published','author'=>'author','authorEmail'=>'authorEmail','version'=>'version');
Связано с созданием репозитария... |
| NordWest |
Отправлено: 11 ноября 2012 — 01:21 • Тема: История изменений... • Форум: Limbo CMS |
Ответов: 40 Просмотров: 28468
 |
class_install.php
Поправил функцию isValid()
стало (Показать)function isValid()
{
global $lm_version_num;
$ismosinstall = $this->xml->getElementByPath('mosinstall' );
if($ismosinstall->attribute('type') !== $this->type) return _INSTALL_INCORRECT;
if (!$ismosinstall->getElementByPath('version' ))
{return _INSTALL_NOVERS;};
$ismosinstall = $ismosinstall->getElementByPath('version' );
$cor_version = strtolower(str_replace('.','', substr($lm_version_num,0,5)));
$mod_version = strtolower(preg_replace('~[^0-9]+~','', substr($ismosinstall->getValue(),0,5)));
if($mod_version < $cor_version) return _INSTALL_NOVERS;
return false;
}
Связано с изменением структуры заголовка xml файлов инсталляторов. |
| NordWest |
Отправлено: 9 ноября 2012 — 13:01 • Тема: Работа в Limbo с XML данными • Форум: Limbo CMS |
Ответов: 7 Просмотров: 3153
 |
Следующий код перебирает содержимое дочерних элементов
Там применяется метод getValue(), который получает всё текстовое содержимое отсекая все теги.
code:foreach($items as $item)
{
$tinfo=false;
foreach($req as $var=>$val)
{
$obj = $item->getElementByPath($val);
if($obj)
{$tinfo[$var]=$obj->getValue();}
else
{$tinfo[$var]='';}
}
$info[]=$tinfo;
print_r( $tinfo ); ?><br /><br /><? ;
}
}
return $info;
Спойлер (Показать)Array ( [id] => banners [name] => Banners [link] => [published] => [author] => Vikas Patial [version] => 1.0.5 [date] => 16.02.12 [authorEmail] => radius@maxdsl.ru [size] => 5,38 kB ) |
| NordWest |
Отправлено: 9 ноября 2012 — 00:45 • Тема: Работа в Limbo с XML данными • Форум: Limbo CMS |
Ответов: 7 Просмотров: 3153
 |
Присваиваем переменной $items результат метода $update_element->getAllChildren()
Этот метод возвращает список всех дочерних элементов объекта.
code:$items = $update_element->getAllChildren();
В случае, когда $update_element получено при $path = 'components' имеем ответ
Спойлер (Показать)Array ( [0] => MiniXMLElement Object ( [xname] => banners [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLElement Object ( [xname] => id [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => banners [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [1] => MiniXMLElement Object ( [xname] => name [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => Banners [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [2] => MiniXMLElement Object ( [xname] => author [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => Vikas Patial [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [3] => MiniXMLElement Object ( [xname] => version [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => 1.0.5 [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [4] => MiniXMLElement Object ( [xname] => date [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => 16.02.12 [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [5] => MiniXMLElement Object ( [xname] => authorEmail [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => radius@maxdsl.ru [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [6] => MiniXMLElement Object ( [xname] => size [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => 5,38 kB [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) ) [xnumChildren] => 7 [xnumElementChildren] => 7 [xavoidLoops] => 0 [xparent] => ) ) |
| NordWest |
Отправлено: 9 ноября 2012 — 00:38 • Тема: Просмотр содержимого объектов или архивов • Форум: Записная книжка PHP |
Ответов: 1 Просмотров: 4018
 |
Функции для работы с классами и объектами
get_class_methods()
Функция get_class_methods() возвращает массив имен методов класса с заданным именем. Синтаксис функции get_class_methods():
code:array get_class_methods (string имя_класса)
get_class_vars()
Функция get_class_vars() возвращает массив имен атрибутов класса с заданным именем. Синтаксис функции get_class_vars():
code:array get_class_vars (string имя_класса)
get_object_vars()
Функция get_object_vars() возвращает ассоциативный массив с информацией обо всех атрибутах объекта с заданным именем. Синтаксис функции get_object_vars():
code:array get_object_vars (object имя_обьекта)
method_exists()
Функция method_exists() проверяет, поддерживается ли объектом метод с заданным именем. Если метод поддерживается, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис функции method_exists():
code:bool method_exi sts (object имя_обьекта. string имя_метода)
get_class()
Функция get_class() возвращает имя класса, к которому относится объект с заданным именем. Синтаксис функции get_class():
code:string get_class(object имя_объекта);
get_parent_class()
Функция get_parent_class() возвращает имя родительского класса (если он есть) для объекта с заданным именем. Синтаксис функции get_parent_dass():
code:string get_parent_class (object имя_обьекта);
is_subclass_of()
Функция is_subclass_of() проверяет, был ли объект создан на базе класса, имеющего родительский класс с заданным именем. Функция возвращает TRUE, если проверка дает положительный результат, и FALSE в противном случае. Синтаксис функции is_subclass_of():
code:bool is_subclass_of (object объект, string имя_класса)
get_declared_classes()
Функция get_declared_classes() возвращает массив с именами всех определенных классов. Синтаксис функции get_declared_classes():
code:array get_declared_classes() |
| NordWest |
Отправлено: 9 ноября 2012 — 00:08 • Тема: Работа в Limbo с XML данными • Форум: Limbo CMS |
Ответов: 7 Просмотров: 3153
 |
Разбираем функцию read_updates_xml
Переменной $update_element присваиваем результат метода $xml->getElementByPath($path)
Этот метод ищет в объекте $xml секцию согласно адреса, указанного в параметре. В качестве параметра может быть имя секции, или конструкция разделённая слешем и описывающая родственные связи (раздел/подраздел и т.д.)
code:$update_element = $xml->getElementByPath($path);
В случае, когда переменная $path = 'components' имеем ответ
Спойлер (Показать)MiniXMLElement Object ( [xname] => components [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLElement Object ( [xname] => banners [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLElement Object ( [xname] => id [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => banners [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [1] => MiniXMLElement Object ( [xname] => name [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => Banners [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [2] => MiniXMLElement Object ( [xname] => author [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => Vikas Patial [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [3] => MiniXMLElement Object ( [xname] => version [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => 1.0.5 [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [4] => MiniXMLElement Object ( [xname] => date [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => 16.02.12 [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [5] => MiniXMLElement Object ( [xname] => authorEmail [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => radius@maxdsl.ru [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) [6] => MiniXMLElement Object ( [xname] => size [xattributes] => Array ( ) [xchildren] => Array ( [0] => MiniXMLNode Object ( [xtext] => 5,38 kB [xnumeric] => [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 0 [xavoidLoops] => 0 [xparent] => ) ) [xnumChildren] => 7 [xnumElementChildren] => 7 [xavoidLoops] => 0 [xparent] => ) ) [xnumChildren] => 1 [xnumElementChildren] => 1 [xavoidLoops] => 0 [xparent] => ) |
| NordWest |
Отправлено: 8 ноября 2012 — 15:24 • Тема: Работа в Limbo с XML данными • Форум: Limbo CMS |
Ответов: 7 Просмотров: 3153
 |
Сохраняем в переменной $table_data результат функции read_updates_xml
Эта функция получает данные из объекта $xml, ищет там категорию components и в этой категории ищет данные согласно списка, определенного в архиве $table_req
code:$table_data = read_updates_xml($xml,'components',$table_req );
Спойлер (Показать)Array ( [0] => Array ( [id] => banners [name] => Banners [link] => [published] => [author] => Vikas Patial [version] => 1.0.5 [date] => 16.02.12 [authorEmail] => radius@maxdsl.ru [size] => 5,38 kB ) ) |
|