Example #1
0
    function render(){
        if(!isset(lib('page')->data[$this->id])){
            die('Controller missing the repeater: '.$this->id);
        }
        $this->logic = lib('page')->data[$this->id];
        if( !isset($this->logic->binding) ) $this->logic->binding = $this->logic->id;
        
        $state = @lib('uri')->segment ( sizeof( explode('/',$this->logic->base) ) -  $this->logic->offset );
        $item_id = @lib('uri')->segment ( sizeof( explode('/',$this->logic->base) ) - $this->logic->offset +1 );
        $item_obj = lib('db')->find($this->logic->binding, 'uid="'.$item_id.'"')->row();


        $dom = lib('htmldom')->str_get_dom($this->inner);
        
        $where = (isset($this->logic->where))?$this->logic->where:'id>0';
        
        switch($state){



            case '':
            case 'page':
                if ( !$this->logic->view_permissions($item_obj) ){return;}
                
                if( isset($this->logic->page_size) ){
                    $page_size = $this->logic->page_size;
                    $page_id = $item_id;
                    $offset = $page_size * $page_id;
                    if($page_id == '')$page_id = 0;
                    
                    $page_count = lib('db')->find($this->logic->binding, $where)->count() / $page_size;
                    if ( $page_count != floor( $page_count ) ){
                        $page_count = floor( $page_count ) + 1;
                    }
                    $page_count -= 1;
                    $where .= " limit $page_size offset $offset";
                }

                $records = lib('db')->find($this->logic->binding, $where);
                
                if($records->count()==0){
                    if($dom->find('empty',0)){
                        eval ($this->evalprep($dom->find('empty',0),'',true));
                    }
                }else{
                    ob_start();
                    if($dom->find('before',0)){
                        eval ($this->evalprep($dom->find('before',0),'',true));
                    }
                    $count = 0;
                    foreach($records->result() as $row){
                        $count++;
                        eval ($this->evalprep($dom->find('row',0),$row,true));
                    }
                    if($dom->find('after',0)){
                        eval ($this->evalprep($dom->find('after',0),'',true));
                    }
                    $grid = ob_get_clean();
                    
                    if( isset($this->logic->page_size) ){
                        $paging_dom = $dom->find('paging',0);
                        ob_start();
                        if ( $page_id > 0 ){
                            $first_link = $paging_dom->find('.r_first',0);
                            $first_link->href = $this->logic->base;
                            print $first_link;

                            $prev_link = $paging_dom->find('.r_prev',0);
                            $prev_link->href = $this->logic->base.'/page/'.($page_id-1);
                            print $prev_link;
                        }
                        
                        for ( $f = 0; $f<=$page_count; $f++ ){
                            if ( $page_id != $f ){
                                $lnk = $paging_dom->find('.r_link',0);
                                $lnk->href = $this->logic->base.'/page/'.$f;
                                print str_replace('{id}',$f+1,$lnk);
                            }else{
                                $lnk = $paging_dom->find('.r_current',0);
                                print str_replace('{id}',$f+1,$lnk);
                            }
                        }
                        
                        if( $page_id < $page_count ){
                            $next_link = $paging_dom->find('.r_next',0);
                            $next_link->href = $this->logic->base.'/page/'.($page_id+1);
                            print $next_link;
                            
                            $last_link = $paging_dom->find('.r_last',0);
                            $last_link->href = $this->logic->base.'/page/'.$page_count;
                            print $last_link;
                        }

                        $paging = ob_get_clean();
                    }
                    
                    print str_replace('{paging}', @$paging, $grid);
                }
                break;




            case 'add':
                if ( !$this->logic->add_permissions() ){return;}

                $form = $dom->find('form',0);

                foreach($form->find('add,modify') as $tag){
                    if($tag->tag=='add'){
                        $tag->outertext = $tag->innertext;
                    }else{
                        $tag->outertext = '';
                    }
                }

                if ( $form == '' ) $form = lib('htmldom')->str_get_dom( '<form></form>' );

                $form->enctype="multipart/form-data";
                $form->method = 'post';
                $form->action = $this->logic->base.'/add';

                $form = lib('htmldom')->str_get_html( ''.$form );

                if(!$_POST){
                    if(!$form){
                        print '<b>Form</b> element is missing in repeater <b>'.$this->id.'</b>';
                        break;
                    }else{
                        @eval ($this->evalprep($form));
                    }
                }else{
                    if($this->logic->validator($_POST)==true){
                        // insert $_POST to database
                        $insert = lib('db')->dispense($this->logic->binding);
                        $insert = $this->form_to_db($form, $insert, $_POST);
                        if(isset($this->logic->callback)){
                            $insert = $this->logic->callback($insert);
                        }
                        //$insert->uid = strtolower(rand_string(16));
                        if($insert){
                            lib('db')->store($insert);
                        }
                        $insert = $this->logic->post_store($insert);
                        redirect($this->logic->base);
                    }else{
                        // populate form with $_POST and
                        //print_r($_POST);die();
                        $form = $this->populate_form_from_array($form, $_POST);
                        //  re-display
                        //print($form);die();
                        @eval ($this->evalprep($form));
                    }
                }
                break;



            case 'modify':
                if ( !$this->logic->modify_permissions($item_obj) ){return;}
                $form = $dom->find('form',0);

                foreach($form->find('add,modify') as $tag){
                    if($tag->tag=='modify'){
                        $tag->outertext = $tag->innertext;
                    }else{
                        $tag->outertext = '';
                    }
                }
                
                $form->enctype="multipart/form-data";
                $form->method = 'post';
                $form->action = $this->logic->base.'/modify/'.$item_id;
                
                $form = lib('htmldom')->str_get_html( ''.$form );

                if(!$item_obj){
                    apex::show404();
                }else{
                    if(!$_POST){
                        $form = $this->populate_form_from_array($form, object_to_array($item_obj) );
                        eval ($this->evalprep($form, $item_obj));
                    }else{
                        if($this->logic->validator($_POST)==true){
                            $item_obj = $this->form_to_db($form, $item_obj, $_POST);
                            $item_obj = $this->logic->callback($item_obj);
                            if($item_obj){
                                lib('db')->store($item_obj);
                            }
                            $item_obj = $this->logic->post_store($item_obj);
                            redirect($this->logic->base);
                        }else{
                            // populate form with $_POST and
                            $form = $this->populate_form_from_array($form, $_POST);
                            //  re-display
                            eval ($this->evalprep($form));
                            
                        }
                    }
                } 
                break;
            
            case 'delete':
                if ( !$this->logic->delete_permissions($item_obj) ){return;}
                if(isset($this->logic->before_delete)){
                    $item_obj = $this->logic->before_delete($item_obj);
                }                lib('db')->destroy($item_obj);
                redirect($this->logic->base);
                break;


            default:
                apex::show404();
                break;
        }
    }
Example #2
0
    public static function modules(){
	if(self::$modules==null){
	    $modules = array();
	    $dir = APP.'/modules/';
	    if ($handle = opendir($dir)) {
		    while (false !== ($file = readdir($handle))) {
			    if($file!='.' && $file!='..' && is_dir($dir.$file)){
				    $modules[] = $dir.$file;
			    }
		    }
		    closedir($handle);
	    }
	    array_unshift ( $modules, APP );
	    array_push ( $modules, SYS );
	    self::$modules = $modules;
	}
	return self::$modules;
    }
Example #3
0
<?php
error_reporting(E_ALL);
define ('SYS','sys');
define ('APP','app');
include SYS."/core.php";
hook('framework_loaded');
apex::go();