[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Надоело кодить с нуля
Страницы: 1, 2, 3, 4, 5
Michael
Цитата (Ron)
Прямо CMF? =) И чего, есть документация как к ней модули/плагины рисовать? )) Иначе это просто кастомная CMS на некотором самописном фрейме, не более того.

где тут логика? biggrin.gif

_____________
There never was a struggle in the soul of a good man that was not hard
Ron
Цитата (Michael @ 18.12.2015 - 10:10)
где тут логика? biggrin.gif

Вроде Drupal считается CMF? А та же джумла - нифига. Игорь написал некое подобие друпала? Что ж, похвально! )

Игорь_Vasinsky
Цитата
И чего, есть документация как к ней модули/плагины рисовать? ))

логики действительно нет.

CMF подразумевает под собой - CMS, но в данном случае - работа на структурой сайта и функционалом - не ограничивается кликаньем по ссылкам в админке, грубо говоря - это управление самой CMS

у меня даже есть модуль для создания модулей - он создаёт 3 файла MVC - с первоначальным кодом

Цитата
Игорь написал некое подобие друпала?

угу.

я же говорю - фреймворк, на котором равёрнута CMS - со стандартным функционалом (для быстрого разварачивания стандартных сайтов), в то же время - расширение функционала не имеет предела.

весь пользовательский интерфейс (шаблоны) пишутся под конкретный дизайн.

а доки мне и не нужны, я ж писал код, и не для шары

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ron
Значит я плохо разбираюсь в терминологии. =) Всегда думал, что CMF нечто очень крутое и в одиночку создать невозможно.

Игорь, а код где-нибудь можно глянуть? Или хотя бы скриншоты.

Игорь_Vasinsky
Ron
щас сделаем

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Скрины
user posted image

user posted image

user posted image

user posted image

user posted image

user posted image

user posted image

user posted image

user posted image



а самое главное, что не надо писать одно и то же по 100500 раз

в базовом классе есть и логирование и обёртки, удобная работа с постраничкой и т.д. и т.д.

базовые контроллер и модель
Свернутый текст
<?php
/**
* Класс базовой модели
*
@author Vasinsky Igor
*
@email igor.vasinsky@gmail.com
* @copyright 2013
*/


class BaseModel{
const DEBUG = DEBUG;
protected $mysqli;
protected $start;
protected $count;
protected $pageSize;
protected $thisPage;
private $paginate = array();

public function __construct(){
return $this->mysqli = Fw_mysqli::connect();
}

/**
* Запрос в БД
*
@param string - sql запрос
*/

public function sqlQuery($sql){
$result = $this->mysqli->query($sql);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
return $result;
}
}


/**
* Мульти запрос в БД
*
@param string - sql запрос
*/

public function sqlMultyQuery($sql){
$result = $this->mysqli->multi_query($sql);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
while($this->mysqli->next_result()) $this->mysqli->store_result($linkId);
return $result;
}
}


/**
* Возвращает ассоц масив по sql запросу
*
@param string - sql запрос
*/

public function returnData($sql){
$result = $this->mysqli->query($sql);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
return $data;
}
else{
return false;
}
}
}

/**
* Обновление данных
*
@param string - sql запрос
*/

public function updateData($sql){
$result = $this->mysqli->query($sql);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{

return $this->mysqli->affected_rows;
}
}


/**
* Удаление данных
*
@param string - sql запрос
*
@return object
*/

public function deleteData($sql){
$result = $this->mysqli->query($sql);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
return $this->mysqli->affected_rows;
}
}



/**
* Возвращает постраницную выборку
*
@param string - sql запрос без LIMIT
*
@param int - кол-во строк на одну страницу
*
@param int >0 текущая страница
*
@return array
*/

public function getPaginateData($sql, $pageSize, $curPage){
$result = $this->mysqli->query($sql);
$this->thisPage = $curPage;
$data = false;

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'>>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
$totalData = $result->num_rows;

if($totalData <= $pageSize){
while($row = $result->fetch_assoc()){

$data[] = $row;
}
return $data;
}
else{
$result = null;

if($this->thisPage == 1)
$this->start = 0;

$this->start = ($this->thisPage*$pageSize)-$pageSize;
$pages = ceil($totalData/$pageSize);

$result = $this->mysqli->query($sql.' limit '.$this->start.','.$pageSize);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
/**
* 2й массив - номера страниц и активная страница - url прописывается ручками
*/

$padinate = array();

for($i=0;$i<=$pages;$i++){
if($i == $curPage)
$paginate['active'] = $i;
else{
$paginate[] = $i;
}
}


unset($paginate[0]);
$this->paginate = $paginate;
}

return $data;
}

}
}
}


public function paginate(){
return $this->paginate;
}

public function escape($data){
return $this->mysqli->real_escape_string($data);
}

public function multiQuery($sqls){
$result = $this->mysqli->multi_query($sqls);

if($result === false){
return false;
}
else{

while($this->mysqli->more_results() && $this->mysqli->next_result())
$this->mysqli->store_result();


return true;
}

}


public function last_id(){
return $this->mysqli->insert_id;
}

/**
* Возвращает данные страницы из таблицы pages указывая name
*
@param string - sql запрос
*/

public function returnPageData($name){
$sql = "select * from pages where name = '".$this->escape($name)."' LIMIT 1";

$result = $this->mysqli->query($sql);

if(!$result){
Files::addtolog(LOG_MYSQLI, $sql.'--->>>'.$this->mysqli->error);

throw new Exception($this->mysqli->error);
}
else{
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
return $data;
}
else{
return false;
}
}
}
}

?>
<?php
/**
* Класс базовой контроллера
*
@author Vasinsky Igor
*
@email igor.vasinsky@gmail.com
* @copyright 2013
*/


class BaseController{
const DEBUG = DEBUG;
public $model;
public $data = array();

/**
* Пагинация
*/

public $paginateNumberPages = 10;
public $paginateButtonNext = true;
public $paginateButtonPrev = true;
public $paginateButtonNextText = 'дальше';
public $paginateButtonPrevText = 'назад';
public $paginateCurPage = 1;

public function __construct(){

}


public function setModel($route){
$class = $route.'Model';
$this->model = new $class;

return $this->model;
}

public function returnData($sql){
return $this->model->returnData($sql);
}

public function updateData($sql){
return $this->model->updateData($sql);
}

public function deleteData($sql){
return $this->model->deleteData($sql);
}

public function query($sql){
return $this->model->query($sql);
}

public function getPaginateData($sql, $pageSize, $curPage){
return $this->model->getPaginateData($sql, $pageSize, $curPage);
}

public function view($pathtotpl){

ob_start();
Files::load($pathtotpl);
$html = ob_get_contents();
ob_clean();

echo Snippet::parseSnippet($html, MODE);
}
/**
* ДОПИЛИТЬ
*/

public function paginate(){
return $this->model->paginate();
}
}

?>


куча библий
Свернутый текст
user posted image
user posted image


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.