1. Go to this page and download the library: Download piotrpolak/pepiscms library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
piotrpolak / pepiscms example snippets
$this->formbuilder->setCallback( array($this, '_fb_callback_before_render'), FormBuilder::CALLBACK_BEFORE_RENDER );
$this->formbuilder->setCallback( array($this, '_fb_callback_before_save'), FormBuilder::CALLBACK_BEFORE_SAVE );
$this->formbuilder->setCallback( array($this, '_fb_callback_after_save'), FormBuilder::CALLBACK_AFTER_SAVE );
$this->formbuilder->setCallback( array($this, '_fb_callback_on_save'), FormBuilder::CALLBACK_ON_SAVE );
$this->formbuilder->setCallback( array($this, '_fb_callback_on_save_failure'), FormBuilder::CALLBACK_ON_SAVE_FAILURE );
$this->formbuilder->setCallback( array($this, '_fb_callback_on_read'), FormBuilder::CALLBACK_ON_READ );
/**
* Called after validation, before saving
* @param array $data_array
*/
public function _fb_callback_before_save( &$data_array ){}
/**
* Some logs or statistics maybe?
* @param array $data_array
*/
public function _fb_callback_after_save( &$data_array ){}
/**
* Put here your rollback action
* @param object $object
*/
public function _fb_callback_on_save_failure( &$object ){}
/**
* Must overwrite the save procedure and return true or false
* @param object $object
*/
public function _fb_callback_on_save( &$object ){}
/**
* Must populate object
* @param object $object
*/
public function _fb_callback_on_read( &$object ){}
/**
* Can manipulate data after read, before rendering
* @param object $object
*/
public function _fb_callback_before_render( &$object ){}
/**
* Callback function changing the name of the file to SEO friendly
*
* @version: 1.2.3
* @date: 2015-06-11
*
* @param $filename
* @param $base_path
* @param $data
* @param $current_image_field_name
* @return bool
*/
public function _fb_callback_make_filename_seo_friendly(&$filename, $base_path, &$data, $current_image_field_name)
{
// List of the fields to be used, if no value is present for a given key
// then the key will be ignored. By default all values of the keys
// specified will be concatenated
$title_field_names = array('name', 'title', 'label');
$this->load->helper('string');
$path = $base_path . $filename;
$path_parts = pathinfo($path);
// Attempt to build a name
$new_base_filename = '';
foreach ($title_field_names as $title_field_name) {
// Concatenating all the elements
if (isset($data[$title_field_name]) && $data[$title_field_name]) {
$new_base_filename .= '-' . $data[$title_field_name];
}
}
// Making it web safe
if ($new_base_filename) {
$new_base_filename = niceuri($new_base_filename);
}
// This should not be an else statement as niceuri can return empty string sometimes
if (!$new_base_filename) {
$new_base_filename = niceuri($path_parts['filename']);
}
// This should normally never happen, but who knows - this is bulletproof
if (!$new_base_filename) {
$new_base_filename = md5(time() + rand(1000, 9999));
}
$new_base_path = '';
// $new_base_path = date('Y-m-d') . '/'; // Will create directory based on date
// $new_base_path = $new_name_base . '/'; // Will create directory based on the niceuri value
// @mkdir($base_path . $new_base_path); // Do not forget!
// We don't like upper case extensions
$extension = strtolower($path_parts['extension']);
$new_name = $new_base_filename . '.' . $extension;
// Protection against existing files
$i = 2;
while (file_exists($base_path . $new_base_path . $new_name)) {
$new_name = $new_base_filename . '-' . $i . '.' . $extension;
if ($i++ > 50 || strlen($i) > 2) // strlen is a protection against the infinity loop for md5 checksums
{
// This is ridiculous but who knowss
$i = md5(time() + rand(1000, 9999));
}
}
// No need to change filename? Then we are fine
if ($filename == $new_name) {
return TRUE;
}
// Finally here we go!
if (rename($path, $base_path . $new_base_path . $new_name)) {
$data[$current_image_field_name] = $new_base_path . $new_name;
$filename = $new_base_path . $new_name;
return TRUE;
}
return FALSE;
}
$this->load->library('DataGrid');
echo $this->datagrid->setFiltersShownBeforeGrid(TRUE)
->setFiltersShownAfterGrid(TRUE)
->setOrderable(TRUE)
->setTableHeadVisible(TRUE)
->setTitle("My Table")
// All links will be generated with respect to this base URL
->setBaseUrl(admin_url() . 'somepage/edit')
->setDefaultOrder('id', 'asc')
->setItemsPerPage(300)
->setDefinition($definition)
->addFilter('Since', 'published_since_datetime',DataGrid::FILTER_DATE, FALSE,
DataGrid::FILTER_CONDITION_LESS_OR_EQUAL)
->addFilter('To', 'published_since_datetime', DataGrid::FILTER_DATE, FALSE,
DataGrid::FILTER_CONDITION_GREATER_OR_EQUAL)
->setRowCssClassFormattingFunction(function ($line) {
if ($line->is_active == 1) {
return DataGrid::ROW_COLOR_GREEN;
} else {
return DataGrid::ROW_COLOR_RED;
}
})
->setFeedObject($this->MyFavourite_model)
->generate();
$this->load->library('DataGrid');
// All links will be generated with respect to this base URL
echo $this->datagrid->setBaseUrl(admin_url() . 'somepage/edit')
->setDefinition($definition)
->setTable('items') // Will automatically instantiate Generic_model for 'items' table
->generate();
public function _datagrid_format_order_value( $cell_value, &$line ) {
return $cell_value.' PLN';
}
// The oldschool CodeIgniter way
class YourOldSchoolNastyLibrary
{
public function myServiceMethod() {
$CI = CI_Controller::getInstance(); // THAT IS NASTY
$CI->load->library('email');
// Autocomplete and method prediction does not work or
// The PepisCMS way
class YourNewNiceLibrary extends ContainerAware
{
public function myServiceMethod() {
$this->load->library('email');
// Autocomplete and method prediction works out of the box :)
return $this->email->from('[email protected]')
->to('[email protected]')
->subject('Hello')
->body('Hello World!')
->sent();
}
}
class YourNewNiceAlternativeLibrary
{
public function __get($var)
{
return ContainerAware::__doGet($var);
}
public function myServiceMethod() {
$this->load->library('email');
// Autocomplete and method prediction does not work out of the box :(
return $this->email->from('[email protected]')
->to('[email protected]')
->subject('Hello')
->body('Hello World!')
->sent();
}
}