Case registry - Joomla! Forum - community, help and support


hello, i'm vet , i've been trying customize 'project log' component make cancer case registry.

this main page list of cases (sorry, it's in italian).

image

the problem is, while it's okay admins see whole list, i'd registered users view cases project manager of.

i have tried this:

code: select all

if($this->user->id == $p->manager || $user->usertype == "administrator" || $user->usertype == "super administrator" ) :
echo'<td>' . $p->release_id . '</td>
etc.

but in way getresultscounter , getpagescounter functions still work if results displayed (results - 1-7 of 7).

image

any suggestion? i'm attaching codes. many thanks!

code: select all

defined('_jexec') or die('no access');

jimport('joomla.application.component.model');

class projectlogmodelprojectlog extends jmodel
{
   var $_id = null;
   var $_project = null;
   var $_data = null;
    var $_total = null;
    var $_pagination = null;

   function __construct()
   {
      parent::__construct();
        global $option;

        $mainframe =& jfactory::getapplication() ;
         $config = jfactory::getconfig() ;

      $this->setid( jrequest::getint('project_id', '0' ));

        // pagination request variables
        $limit = $mainframe->getuserstatefromrequest( 'global.list.limit', 'limit', $config->getvalue('config.list_limit'), 'int' );
        $limitstart = jrequest::getint( 'limitstart', 0 );

        $this->setstate('limit', $limit);
        $this->setstate('limitstart', $limitstart);
   }

   function setid($id)
   {
      $this->_id = $id;
   }

   function &getdata()
   {
      $this->loaddata() ;
        if( $this->_pagination ) {
                echo 'here!';
            $data = array_slice( $this->_data, $this->getstate('limitstart'), $this->getstate('limit'));
            return $data ;
        } else {
            return $this->_data ;
        }
   }

   function loaddata()
   {
      // lets load content if doesn't exist
      if (empty($this->_data))
      {
            $this->_data = array();
            $where = $this->getwhere();
            $orderby = $this->getorderby();
            $limit = $this->getstate('limit');
            $limitstart = $this->getstate('limitstart');
            if( !$limit ) $limit = 99999;

         $query = 'select p.* #__projectlog_projects p'.
                    ' p.published = 1'.
                    $where .
                    $orderby .
                    ' limit ' . $limitstart . ', ' . $limit;
         $this->_db->setquery($query);
         $this->_data = $this->_db->loadobjectlist();
         return $this->_data;
      }
      return array() ;
   }

   function &getproject($project_id)
   {
      if (empty($this->_project))
      {
            $db = &jfactory::getdbo();
            if( $project_id != null ) {
                $this->_project_id = (int)$project_id ;
            }
           
         $query = 'select p.* #__projectlog_projects p id = '.(int)$this->_project_id;

         $db->setquery($query);
         $this->_project = $db->loadobject();

            if( $this->_project == null ) {
                return $this->_initproject();
            }

        }
      return $this->_project;
   }

    function gettotal()
    {
         $this->_data = array();
         $where = $this->getwhere() ;
         $orderby = $this->getorderby() ;

         $query = 'select p.* #__projectlog_projects p'.
                ' p.published = 1'.
                $where .
                $orderby ;
         $this->_db->setquery($query);
         $total = $this->_db->loadobjectlist();
         $this->_total = count( $total) ;
         return $this->_total;
    }

    function getpagination()
    {
        // lets load content if doesn't exist
        if (empty($this->_pagination))
        {
            jimport('joomla.html.pagination');
            $this->_pagination = new jpagination( $this->gettotal(), $this->getstate('limitstart'), $this->getstate('limit') );
        }
        return $this->_pagination;
    }

    function getwhere() {
        global $mainframe;
       
        $where = '' ;
        $filter          = $mainframe->getuserstatefromrequest( $option.'.filter', 'filter', '', 'int' );
        $search          = $mainframe->getuserstatefromrequest( $option.'.search', 'search', '', 'string' );
      $search          = $this->_db->getescaped( trim(jstring::strtolower( $search ) ) );

       if ($search && $filter == 1) {
         $where .= " , p.title '%" . $search . "%'";
      }else if ($search && $filter == 2) {
         $where .= " , p.release_id '%" . $search . "%'";
      }
        return $where ;
    }

    function getorderby() {
        global $mainframe;

      $sort      = $mainframe->getuserstatefromrequest( $option.'.projectlog.filter_order', 'filter_order', 'p.release_date desc', 'cmd' );
      $order       = $mainframe->getuserstatefromrequest( $option.'.projectlog.filter_order_dir', 'filter_order_dir', '', 'word' );
      $orderby = ' order ';

        if ($sort && $order)
      {
         $orderby .= $sort .' '. $order;
      }else{
            $orderby .= 'p.release_date desc';
        }
        return $orderby;
    }

    function setlimit( $limit ) {
        if( $limit > 0 ) {
            $this->setstate('limit', $limit);
            return true ;
        }
        return false ;
    }

    function _initproject() {
        if (empty($this->_project))
        {
            $project = new stdclass();
            $project->id            = 0;
         $project->release_id    = null;
            $project->job_id        = null;
            $project->task_id       = null;
            $project->workorder_id  = null;
            $project->title         = null;
            $project->description   = null;
            $project->release_date  = null;
            $project->contract_from = null;
            $project->contract_to   = null;
            $project->location_gen  = null;
            $project->location_spec = null;
         $project->manager       = null;
         $project->chief         = null;
            $project->technicians   = null;
         $project->deployment_from = null;
            $project->deployment_to = null;
            $project->onsite        = null;
            $project->surveytype    = null;
            $project->surveyor      = null;
            $project->status        = null;
            $project->published     = 1;
            $this->_project         = $project;
        }
        return $this->_project;
    }

    function saveproject($post)
   {
        $query = 'select count(*)' .
                ' #__projectlog_projects' .
                ' id = '.(int) $post['id'];
        $this->_db->setquery($query);
        $project = $this->_db->loadresult();
        $date = date('y-m-d h:i:s');

        $release_id       = $post['release_id'];
        $job_id           = $post['job_id'];
        $task_id          = $post['task_id'];
        $workorder_id     = $post['workorder_id'];
        $title            = $post['title'];
        $description      = $post['description'];
        $release_date     = $post['release_date'];
        $contract_from    = $post['contract_from'];
        $contract_to      = $post['contract_to'];
        $location_gen     = $post['location_gen'];
        $location_spec    = $post['location_spec'];
        $manager          = $post['manager'];
        $chief            = $post['chief'];
        $technicians      = $post['technicians'];
        $deployment_from  = $post['deployment_from'];
        $deployment_to    = $post['deployment_to'];
        $onsite           = $post['onsite'];
        $surveytype       = $post['surveytype'];
        $surveyor         = $post['surveyor'];
        $status           = $post['status'];
        $published        = 1;
       




code: select all

defined('_jexec') or die('no access');

$add_project_link = 'index.php?option=com_projectlog&view=projectlog&layout=form&itemid='. jrequest::getvar('itemid');

    $user =& jfactory::getuser();
                     if($this->user->usertype == "administrator" || $user->usertype == "super administrator" ) :
?>
<div align="right">
   <a href="<?php echo $add_project_link; ?>" class="red">[<?php echo jtext::_('nuova cartella'); ?>]</a>
</div>
<?php endif; ?>
<script language="javascript" type="text/javascript">
   function tableordering( order, dir, task )
   {
      var form = document.adminform;

      form.filter_order.value    = order;
      form.filter_order_dir.value   = dir;
      document.adminform.submit( task );
   }

    function listitemtask( id, task )
   {
      var form = document.adminform;

      form.project_edit.value    = id;
        form.task.value            = task;
      document.adminform.submit( task );
   }
   

</script>
<!-- body onload="document.getelementbyid('search').value='<?php echo $this->user->id; ?>'; document.adminform.submit();"> -->

<div class="main-article-title">
    <h2 class="contentheading"><?php echo jtext::_('registro casi'); ?></h2>
</div>
<div class="main-article-block">
<div style="margin-bottom: 15px; margin-top: 15px">
    <?php echo jtext::_('benvenuto/a, oggi &egrave; il'); ?><font color="#656379"><strong> <?php echo date('d/m/y'); ?></strong>.</font>
</div>

<form name="adminform" method="get" action="index.php">
<table class="ptable" width="100%" cellpadding="5" cellspacing="1">
    <tr>
      <td colspan="2">
        <div align="left" class="prop_header_results">
            <?php echo $this->pagination->getresultscounter(); ?>
        </div>
      </td>
      <td colspan="5">
        <div align="right" class="prop_header_results">
             <?php echo jtext::_( 'cerca' ).' '.$this->lists['filter']; ?>
         <input type="text" name="search" id="search" value="<?php echo $this->lists['search']; ?>" class="text_area" onchange="document.adminform.submit();" />&nbsp;
         <button onclick="this.form.submit();"><?php echo jtext::_( 'vai' ); ?></button>&nbsp;
            <button onclick="document.getelementbyid('search').value='';this.form.submit();"><?php echo jtext::_( 'reset' ); ?></button>
        </div>
        <br />
      </td>     
    </tr>
   <?php      
   //display results projects
   if( $this->projects ) :
      echo   
         '<tr class="ss-top">
           <th align="left">'. jhtml::_('grid.sort',  'id', 'p.release_id', $this->lists['order_dir'], $this->lists['order'] ) . '</th>
           <th align="left">'. jhtml::_('grid.sort',  'riferimento', 'p.manager', $this->lists['order_dir'], $this->lists['order'] ) . '</th>
           <th align="left">'. jhtml::_('grid.sort',  'neoplasia', 'p.title', $this->lists['order_dir'], $this->lists['order'] ) . '</th>
           <th align="left">'. jhtml::_('grid.sort',  'specie', 'p.surveytype', $this->lists['order_dir'], $this->lists['order'] ) . '</th>
           <th align="left">'. jhtml::_('grid.sort',  'et&agrave;', 'p.chief', $this->lists['order_dir'], $this->lists['order'] ) . '</th>
              <th align="left">'. jhtml::_('grid.sort',  'sesso', 'p.status', $this->lists['order_dir'], $this->lists['order'] ) . '</th>
         </tr>';
       
         $i = 0;
            foreach($this->projects $p) :
                $delete_project_link = 'index.php?option=com_projectlog&view=projectlog&itemid='. jrequest::getvar('itemid') . '&task=deleteproject&id=' . $p->id;
                switch( $p->status ){
                    case 'in progress':
                        $statusclass = 'green';
                    break;
                    case 'on hold':
                        $statusclass = 'orange';
                    break;
                    case 'complete':
                        $statusclass = 'red';
                    break;
                }
            echo '<tr>';
            $user =& jfactory::getuser();
                     if($this->user->id == $p->manager || $user->usertype == "administrator" || $user->usertype == "super administrator" ) :
                 echo'<td><font color="#656379"><strong>' . $p->release_id . '</strong></font></td>
                  <td>' . projectlogviewhelper::getusername($p->manager) . '</td>
                  <td>
                            <a href="index.php?option=com_projectlog&view=project&project_id=' . $p->id . '">' . $p->title . '</a>
                          <br /><a href="'. $add_project_link . '&edit=' . $p->id . '" class="red">[modifica]</a>';
                    if($this->user->usertype == "administrator" || $user->usertype == "super administrator" ) :
                 echo'
                          <a href="'. $delete_project_link . '" class="red" onclick="if(confirm(\'sei sicuro di voler cancellare questo caso? questo comporter&agrave; la cancellazione di tutti dati sul follow-up e dei documenti allegati.\')){return true;}else{return false;};">[cancella]</a>';
                    endif;
'</td>';
      echo'            <td>' . $p->surveytype . '</td>
                  <td>' . $p->chief . '</td>
                  <td>'. $p->status . '</a></td>';
                  endif;
                 '</tr>';
         endforeach;
      
      echo
         '<tr>
            <td colspan="3" align="left">
               ' . $this->pagination->getpageslinks() . '&nbsp;
            </td>
                <td colspan="4" align="right">
                    mostra: ' . $this->pagination->getlimitbox() . '
                </td>
         </tr>
            <tr>
            <td colspan="7" align="center">
               ' . $this->pagination->getpagescounter() . '
            </td>
         </tr>';
   else :
      
      echo   
         '<tr>
           <td colspan="7">
            <div align="center">
               nessun caso inserito.
            </div>
           </td>         
         </tr>';
   
   endif;
    ?>
</table>
<input type="hidden" name="option" value="com_projectlog" />
<input type="hidden" name="view" value="<?php echo jrequest::getvar('view'); ?>" />
<input type="hidden" name="itemid" value="<?php echo jrequest::getvar('itemid'); ?>" />
<input type="hidden" name="filter_order" value="<?php echo $lists['order']; ?>" />
<input type="hidden" name="filter_order_dir" value="<?php echo $lists['order_dir']; ?>" />
<input type="hidden" name="project_edit" value="" />
<input type="hidden" name="task" value="" />
</form>
</div>





Comments

Popular posts from this blog

CS5 Adobe Media Encoder: Encode failed because the source duration is nil.

cf_sql_integer vs cf_sql_bigint vs cf_sql_int??

localhost/joomla15/administrator doesnt work - Joomla! Forum - community, help and support